From: loody <miloody@gmail.com>
To: amodra@gmail.com, binutils@sourceware.org
Subject: Re: some question about output section
Date: Thu, 28 Apr 2011 16:17:00 -0000 [thread overview]
Message-ID: <BANLkTinLAy0CQjYfaHKEYT9-pz7O_LLZtA@mail.gmail.com> (raw)
In-Reply-To: <20110428005642.GG19947@bubble.grove.modra.org>
hi:
2011/4/28 Alan Modra <amodra@gmail.com>:
> On Wed, Apr 27, 2011 at 11:29:13PM +0800, loody wrote:
>> Dear all:
>> I have some questions as below:
>> 1. Is it possible to put whole .text of a static library to one output section?
>> 2. Is it possible to put whole sections of a static library to one
>> output section?
>> 3. is it possible for some file B to get address of some function in
>> A, while linking?
>> 4. usually the address of a static lib is not determined until link
>> stage. Is it possible we can pre-defined the address of each function
>> in a static lib?
>
> Yes, yes, yes and yes. As to how you can do this, see ld info doc
> node "Input Section Basics" for the answer to (1) and (2). For (3)
> and (4) you're going to need to compile with -ffunction-sections then
> write scripts to put the functions where you want them. An
> alternative to (4) is to build a jump table at a fixed address then
> define the function entry points on the jump table entries.
>
after studying the ld info, I make a link script as below:
OUTPUT_ARCH(mips)
ENTRY(entry)
SECTIONS
{
.begin 0xbfb00000 :
{
*(.begin)
. = ALIGN(8);
_end_begin = ABSOLUTE(.);
}
.onlyText 0x80000000 : AT(_end_begin)
{
lib1.a ( *.text )
}
.wholelib 0x81000000 :
{
lib2.a (*)
}
.text : { *(EXCLUDE_FILE (*.a ) .text)}
.data : { *(EXCLUDE_FILE (*.a ) .data) }
}
and I link the files by following command.
mipsel-linux-gnu-ld -T ./link.xn -o TEST_LINK.elf -Map TEST_LINK.map
--oformat elf32-tradlittlemips lib1.a lib2.a main.o ut.o
But I cannot see the section I used to link lib1.a and lib2.a
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: MIPS R3000
Version: 0x1
Entry point address: 0xbfb00000
Start of program headers: 52 (bytes into file)
Start of section headers: 2936 (bytes into file)
Flags: 0x70001001, noreorder, o32, mips32r2
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 1
Size of section headers: 40 (bytes)
Number of section headers: 20
Section header string table index: 17
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .begin PROGBITS bfb00000 000054 000058 00 AX 0 0 4
[ 2] .text PROGBITS bfb00058 0000ac 0002bc 00 AX 0 0 4
[ 3] .rodata.str1.4 PROGBITS bfb00314 000368 000014 01 AMS 0 0 4
[ 4] .data PROGBITS bfb00328 00037c 000014 00 WA 0 0 4
[ 5] .bss NOBITS bfb0033c 000390 000004 00 WA 0 0 4
[ 6] .reginfo MIPS_REGINFO 00000000 000390 000018 18 0 0 4
[ 7] .pdr PROGBITS 00000000 0003a8 0000a0 00 0 0 4
[ 8] .mdebug.abi32 PROGBITS 00000000 000448 000000 00 0 0 1
[ 9] .debug_abbrev MIPS_DWARF 00000000 000448 0000fa 00 0 0 1
[10] .debug_info MIPS_DWARF 00000000 000542 0001b8 00 0 0 1
[11] .debug_line MIPS_DWARF 00000000 0006fa 0000bf 00 0 0 1
[12] .debug_frame MIPS_DWARF 00000000 0007bc 000080 00 0 0 4
[13] .debug_pubnames MIPS_DWARF 00000000 00083c 000083 00 0 0 1
[14] .debug_aranges MIPS_DWARF 00000000 0008bf 000048 00 0 0 1
[15] .debug_str MIPS_DWARF 00000000 000907 000154 01 MS 0 0 1
[16] .comment PROGBITS 00000000 000a5b 000056 00 0 0 1
[17] .shstrtab STRTAB 00000000 000ab1 0000c4 00 0 0 1
[18] .symtab SYMTAB 00000000 000e98 0001e0 10 19 24 4
[19] .strtab STRTAB 00000000 001078 00007a 00 0 0 1
Did I miss anything?
--
Regards,
miloody
next prev parent reply other threads:[~2011-04-28 16:17 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-27 15:29 loody
2011-04-28 0:57 ` Alan Modra
2011-04-28 16:17 ` loody [this message]
2011-04-29 0:32 ` Alan Modra
2011-05-01 13:21 ` loody
2011-05-04 15:51 ` loody
2011-05-05 0:35 ` Alan Modra
2011-05-05 3:00 ` loody
2011-05-05 3:57 ` Alan Modra
2011-05-11 6:27 ` loody
2011-05-11 7:18 ` Alan Modra
2011-05-11 8:12 ` loody
2011-05-18 5:32 ` loody
2011-05-19 4:31 ` loody
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BANLkTinLAy0CQjYfaHKEYT9-pz7O_LLZtA@mail.gmail.com \
--to=miloody@gmail.com \
--cc=amodra@gmail.com \
--cc=binutils@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).