elfwrap - wrap data in an ELF file
elfwrap [-64] [-o relobj-file] [-z target=sparc | x86] data-file...
The elfwrap utility creates an ELF relocatable object file from one or more data files. The relocatable object encapsulates each data file within an individual section, together with symbols that can be used to reference the section. The relocatable object is appropriate for inclusion with a subsequent link-edit. Users can reference the encapsulated data using the associated symbols.
By default, a 32-bit ELF relocatable object is created that is appropriate for the machine on which elfwrap is executed. The -64 option can be used to create a 64-bit ELF relocatable object. The -z target option can be used to create a relocatable object for a specific machine type.
Note -
By default, the relocatable object a.wrap.o is created. The -o option can be used to specify an alternative relocatable object name.
The basename(1) of each data file is used to create various pieces of ELF information. For example, if the input data file is ISV/isv-data, the following ELF information is created within the relocatable object.
An ELF section named .isv-data
An ELF symbol named isv-data_start
An ELF symbol named isv-data_end
The following options are supported:
-64
-o relobj-file
-z target=sparc | x86
The following example encapsulates the system passwd file and the system group file within a relocatable object passgroup.o.
example% elfwrap -o passgroup.o /etc/passwd /etc/group example% elfdump -s passgroup.o | egrep "passwd|group" [2] 0x00000000 0x00000000 SECT LOCL D 0 .passwd [3] 0x00000000 0x00000000 SECT LOCL D 0 .group [7] 0x00000000 0x000002f0 OBJT GLOB D 0 .passwd passwd_start [8] 0x000002f0 0x00000000 OBJT GLOB D 0 .passwd passwd_end [9] 0x00000000 0x00000121 OBJT GLOB D 0 .group group_start [10] 0x00000121 0x00000000 OBJT GLOB D 0 .group group_end example% strings -N.passwd passgroup.o | head -1 root:x:0:0:Super-User:/:/sbin/sh example% strings -N.group passgroup.o | head -1 root::0:
This relocatable object can be referenced from the following user code.
example% cat main.c #include <stdio.h> extern char passwd_start, passwd_end; void main() { char *pstart = &passwd_start, *pend = &passwd_end; char *str, *lstr; for (lstr = str = pstart; str < pend; str++) { if ((*str == ') && (str != (pend - 1))) { (void) printf("%.*s", (++str - lstr), lstr); lstr = str; } } } example% cc -o main main.c passgroup.o example% ./main root:x:0:0:Super-User:/:/sbin/sh .... nobody4:x:65534:65534:SunOS 4.x NFS Anonymous Access User:/:
a.wrap.o
See attributes(5) for descriptions of the following attributes:
|
elfdump(1), ld(1), strings(1), elf(3ELF), attributes(5), ddi_modopen(9F)
Linker and Libraries Guide
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |