SECTIONS
{
. = 0x00c00000;
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) }
}
|
/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
"elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
SECTIONS
{
/* Read-only sections, merged into text segment: */
PROVIDE (__executable_start = 0x08048000); . = 0x08048000 + SIZEOF_HEADERS;
.interp
: { *(.interp) }
.hash
: { *(.hash) }
.dynsym
: { *(.dynsym) }
.dynstr
: { *(.dynstr) }
.gnu.version
: { *(.gnu.version) }
.gnu.version_d : { *(.gnu.version_d) }
.gnu.version_r : { *(.gnu.version_r) }
|
/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
"elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
SECTIONS
{
/* Read-only sections, merged into text segment: */
PROVIDE (__executable_start = 0x08048000); . = 0x08048000 + SIZEOF_HEADERS;
. = 0x00c00000;
.interp
: { *(.interp) }
.hash
: { *(.hash) }
.dynsym
: { *(.dynsym) }
.dynstr
: { *(.dynstr) }
.gnu.version
: { *(.gnu.version) }
.gnu.version_d : { *(.gnu.version_d) }
.gnu.version_r : { *(.gnu.version_r) }
|
int
test(
int
n
)
{
return
n
;
}
|
int
test1
(
int
n
)
{
return
n
;
}
|
extern
int
test
(
int
n
);
extern
int
test1
(
int
n
);
#include
<
stdio
.h>
int
main
(
int
argc
,
char
*
argv
[])
{
printf
(
"Hello: %d %d/n"
,
test
(100),
test1
(200));
getchar
();
return
0;
}
|
all:
gcc -shared -g -Xlinker --script -Xlinker ld.s test.c -o libtest.so
gcc -shared -g -Xlinker --script -Xlinker ld1.s test1.c -o libtest1.so
gcc -g main.c -L./ -ltest -ltest1 -o test.exe
clean:
rm -f *.so *.exe
|
linux-gate.so.1 => (0x00aa3000)
libtest.so => ./libtest.so (0x00c00000)
libtest1.so => ./libtest1.so (0x00d00000)
libc.so.6 => /lib/libc.so.6 (0x007fa000)
/lib/ld-linux.so.2 (0x007dd000)
|
007dd000-007f6000 r-xp 00000000 03:01 521466
/lib/ld-2.4.so
007f6000-007f7000 r-xp 00018000 03:01 521466
/lib/ld-2.4.so
007f7000-007f8000 rwxp 00019000 03:01 521466
/lib/ld-2.4.so
007fa000-00926000 r-xp 00000000 03:01 523579
/lib/libc-2.4.so
00926000-00929000 r-xp 0012b000 03:01 523579
/lib/libc-2.4.so
00929000-0092a000 rwxp 0012e000 03:01 523579
/lib/libc-2.4.so
0092a000-0092d000 rwxp 0092a000 00:00 0
00c00000-00c01000 r-xp 00001000 03:03 16370 /work/test/ldsex/libtest.so
00c01000-00c02000 rwxp 00001000 03:03 16370
/work/test/ldsex/libtest.so
00cf1000-00cf2000 r-xp 00cf1000 00:00 0
[vdso]
00d00000-00d01000 r-xp 00001000 03:03 16373 /work/test/ldsex/libtest1.so
00d01000-00d02000 rwxp 00001000 03:03 16373
/work/test/ldsex/libtest1.so
08048000-08049000 r-xp 00000000 03:03 16374
/work/test/ldsex/test.exe
08049000-0804a000 rw-p 00000000 03:03 16374
/work/test/ldsex/test.exe
b7fdf000-b7fe0000 rw-p b7fdf000 00:00 0
b7fed000-b7ff0000 rw-p b7fed000 00:00 0
bf8db000-bf8f0000 rw-p bf8db000 00:00 0
[stack]
|