Re: [pgsql-patches] Patch to avoid gprofprofilingoverwrites

Started by Bruce Momjianover 19 years ago5 messagespatches
Jump to latest
#1Bruce Momjian
bruce@momjian.us

OK, I took Korry's gmon.out patch and Nikhil's configure.in patch and
made a combined version. It seems the gmon.out and -pg flags are
GCC-specific, rather than being platform-specific, so what I did was to
allow --enable-profiling to only work with GCC.

Patch attached.

---------------------------------------------------------------------------

Nikhil S wrote:

Hi Bruce,

I saw this mail of yours a bit late. Have coded up a patch to accept
--enable-profiling via configure. It is attached with this mail.

It stores the flag in the src/template/linux file.

If you have not started working on it, maybe you can review this and
forward it to Korry if this is useful?

Regards,
Nikhils

Bruce Momjian wrote:

korryd@enterprisedb.com wrote:

What about a "--enable-gprof" (or "--enable-profiling"?) configure
flag? This could add the appropriate compiler flags to CFLAGS, enable
LINUX_PROFILE if on Linux, and enable the "gprof/pid" mkdir().

That would really only work for GCC, wouldn't it?

Well, yeah, but that's what many of us use anyway. I would envision it
as adding $(PROFILE) to CFLAGS, and then there would be one place
to adjust "-pg" to something else for another compiler --- perhaps the
template files could be given a chance to change PROFILE to something
else.

I don't feel competent to muck around with configure.in (sorry, I'm not
tying to shirk the work, I've just never had any success in writing
configure/automake/autoconf stuff - I have the "leaping goats" book, but
I need a small meaningful example to start with).

Can someone else volunteer to make this change? And then forward the
patch to me so I can learn something useful about how to change
configure.in without breaking it?

I can work on this.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

Attachments:

/rtmp/difftext/x-diffDownload+104-2
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#1)

Bruce Momjian <bruce@momjian.us> writes:

+ CFLAGS="$CFLAGS -DPROFILE_PID_DIR -pg ${PROFILE_CFLAGS}"

Kindly use AC_DEFINE instead of random -D in CFLAGS (which is the wrong
place for -D anyway). Also, what exactly is the point here of
PROFILE_CFLAGS? I thought it was supposed to allow substituting
something else for -pg, but you've managed to defeat that.

+ snprintf(gprofDirName, MAXPGPATH, "./gprof/%d", getpid());

getpid is not int everywhere; use a cast. Also, the "./" bits are
silly, and if you ask me so is the MAXPGPATH-sized buffer for a string
that can't exceed 20 or so bytes.

regards, tom lane

#3Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#2)

Tom Lane wrote:

Bruce Momjian <bruce@momjian.us> writes:

+ CFLAGS="$CFLAGS -DPROFILE_PID_DIR -pg ${PROFILE_CFLAGS}"

Kindly use AC_DEFINE instead of random -D in CFLAGS (which is the wrong
place for -D anyway). Also, what exactly is the point here of
PROFILE_CFLAGS? I thought it was supposed to allow substituting
something else for -pg, but you've managed to defeat that.

I can't see the value in having a profile flag that just adds an
environment variable. I am hoping other compilers will supply the flags
they need and we can expand this.

+ snprintf(gprofDirName, MAXPGPATH, "./gprof/%d", getpid());

getpid is not int everywhere; use a cast. Also, the "./" bits are
silly, and if you ask me so is the MAXPGPATH-sized buffer for a string
that can't exceed 20 or so bytes.

Patch updated and attached.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

Attachments:

/pgpatches/profiletext/x-diffDownload+114-2
#4Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#3)

Applied.

---------------------------------------------------------------------------

Bruce Momjian wrote:

Tom Lane wrote:

Bruce Momjian <bruce@momjian.us> writes:

+ CFLAGS="$CFLAGS -DPROFILE_PID_DIR -pg ${PROFILE_CFLAGS}"

Kindly use AC_DEFINE instead of random -D in CFLAGS (which is the wrong
place for -D anyway). Also, what exactly is the point here of
PROFILE_CFLAGS? I thought it was supposed to allow substituting
something else for -pg, but you've managed to defeat that.

I can't see the value in having a profile flag that just adds an
environment variable. I am hoping other compilers will supply the flags
they need and we can expand this.

+ snprintf(gprofDirName, MAXPGPATH, "./gprof/%d", getpid());

getpid is not int everywhere; use a cast. Also, the "./" bits are
silly, and if you ask me so is the MAXPGPATH-sized buffer for a string
that can't exceed 20 or so bytes.

Patch updated and attached.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

#5korryd@enterprisedb.com
korryd@enterprisedb.com
In reply to: Bruce Momjian (#4)
Re: [pgsql-patches] Patch to avoidgprofprofilingoverwrites

Applied.

Thanks for your help Bruce (and Tom and Nikhil).

-- Korry