Re: [fpc-pascal] Getting build ID

2015-10-26 Thread Mark Morgan Lloyd

Mark Morgan Lloyd wrote:

Mark Morgan Lloyd wrote:

Andrew Haines wrote:

On 10/22/2015 08:08 PM, Mark Morgan Lloyd wrote:
If a program is linked with GNU ld using the --build-id option, how 
can it retrieve the value at runtime?


I've never done it but maybe a place to start is use the elfreader 
unit in fcl-res to open ParamStr(0) and read the data from the 
.note.gnu.build-id section.


Thanks, I'll take a look. I'm looking for something that I can put as 
a "magic number" at the bottom of some shared memory, and the build-id 
is ideal since it can be set to a fixed value during debugging.


If I'm reading things properly I have to reimplement 
TElfResourceReader.Load so I can get a subreader, call the FindSection 
method to get a section index, then do something... I've not worked this 
out yet and would appreciate any hints... to convert the section index 
into an address/length in the file and read the data.


I find I can do this comparatively easily using ExeInfo.

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Getting build ID

2015-10-25 Thread Andrew Haines

On 10/25/2015 03:25 PM, Mark Morgan Lloyd wrote:

Mark Morgan Lloyd wrote:

Andrew Haines wrote:

On 10/22/2015 08:08 PM, Mark Morgan Lloyd wrote:
If a program is linked with GNU ld using the --build-id option, how 
can it retrieve the value at runtime?


I've never done it but maybe a place to start is use the elfreader 
unit in fcl-res to open ParamStr(0) and read the data from the 
.note.gnu.build-id section.


Thanks, I'll take a look. I'm looking for something that I can put as 
a "magic number" at the bottom of some shared memory, and the 
build-id is ideal since it can be set to a fixed value during debugging.


If I'm reading things properly I have to reimplement 
TElfResourceReader.Load so I can get a subreader, call the FindSection 
method to get a section index, then do something... I've not worked 
this out yet and would appreciate any hints... to convert the section 
index into an address/length in the file and read the data.


OK, I looked a bit closer at that unit and I don't think you can use it 
since it's only interested in reading resource information. The 
subreaders are more interesting but they are private classes that we 
have no access to.


I had some time and this was interesting so I made a really basic unit 
and test program to read the build id of an elf file. It's not complete 
but it can read 64 bit elf files. If you need 32 it would be easy to 
add. You may use the source however you want.


Regards,

Andrew Haines


elf_build_id.tar.gz
Description: application/gzip
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] Getting build ID

2015-10-25 Thread Mark Morgan Lloyd

Mark Morgan Lloyd wrote:

Andrew Haines wrote:

On 10/22/2015 08:08 PM, Mark Morgan Lloyd wrote:
If a program is linked with GNU ld using the --build-id option, how 
can it retrieve the value at runtime?


I've never done it but maybe a place to start is use the elfreader 
unit in fcl-res to open ParamStr(0) and read the data from the 
.note.gnu.build-id section.


Thanks, I'll take a look. I'm looking for something that I can put as a 
"magic number" at the bottom of some shared memory, and the build-id is 
ideal since it can be set to a fixed value during debugging.


If I'm reading things properly I have to reimplement 
TElfResourceReader.Load so I can get a subreader, call the FindSection 
method to get a section index, then do something... I've not worked this 
out yet and would appreciate any hints... to convert the section index 
into an address/length in the file and read the data.


--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Getting build ID

2015-10-24 Thread Mark Morgan Lloyd

Andrew Haines wrote:

On 10/22/2015 08:08 PM, Mark Morgan Lloyd wrote:
If a program is linked with GNU ld using the --build-id option, how 
can it retrieve the value at runtime?


I've never done it but maybe a place to start is use the elfreader unit 
in fcl-res to open ParamStr(0) and read the data from the 
.note.gnu.build-id section.


Thanks, I'll take a look. I'm looking for something that I can put as a 
"magic number" at the bottom of some shared memory, and the build-id is 
ideal since it can be set to a fixed value during debugging.


--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Getting build ID

2015-10-24 Thread Andrew Haines

On 10/22/2015 08:08 PM, Mark Morgan Lloyd wrote:
If a program is linked with GNU ld using the --build-id option, how 
can it retrieve the value at runtime?


I've never done it but maybe a place to start is use the elfreader unit 
in fcl-res to open ParamStr(0) and read the data from the 
.note.gnu.build-id section.


Regards,

Andrew Haines

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal