OSDN Git Service

(split) LDP: Update POT and ja.po to LDP v3.37.
[linuxjm/LDP_man-pages.git] / po4a / ld / po / ld.pot
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 #, fuzzy
7 msgid ""
8 msgstr ""
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2012-03-22 04:25+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: \n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=CHARSET\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #. type: TH
20 #: build/C/man3/dl_iterate_phdr.3:24
21 #, no-wrap
22 msgid "DL_ITERATE_PHDR"
23 msgstr ""
24
25 #. type: TH
26 #: build/C/man3/dl_iterate_phdr.3:24
27 #, no-wrap
28 msgid "2007-05-18"
29 msgstr ""
30
31 #. type: TH
32 #: build/C/man3/dl_iterate_phdr.3:24 build/C/man3/end.3:25 build/C/man8/ld.so.8:2 build/C/man8/ldconfig.8:22
33 #, no-wrap
34 msgid "GNU"
35 msgstr ""
36
37 #. type: TH
38 #: build/C/man3/dl_iterate_phdr.3:24 build/C/man3/dlopen.3:35 build/C/man5/elf.5:33 build/C/man3/end.3:25 build/C/man8/ld.so.8:2 build/C/man8/ldconfig.8:22 build/C/man1/ldd.1:10 build/C/man7/rtld-audit.7:26
39 #, no-wrap
40 msgid "Linux Programmer's Manual"
41 msgstr ""
42
43 #. type: SH
44 #: build/C/man3/dl_iterate_phdr.3:25 build/C/man3/dlopen.3:36 build/C/man5/elf.5:34 build/C/man3/end.3:26 build/C/man8/ld.so.8:3 build/C/man8/ldconfig.8:23 build/C/man1/ldd.1:11 build/C/man7/rtld-audit.7:27
45 #, no-wrap
46 msgid "NAME"
47 msgstr ""
48
49 #. type: Plain text
50 #: build/C/man3/dl_iterate_phdr.3:27
51 msgid "dl_iterate_phdr - walk through list of shared objects"
52 msgstr ""
53
54 #. type: SH
55 #: build/C/man3/dl_iterate_phdr.3:27 build/C/man3/dlopen.3:39 build/C/man5/elf.5:36 build/C/man3/end.3:28 build/C/man8/ld.so.8:5 build/C/man8/ldconfig.8:25 build/C/man1/ldd.1:13 build/C/man7/rtld-audit.7:29
56 #, no-wrap
57 msgid "SYNOPSIS"
58 msgstr ""
59
60 #. type: Plain text
61 #: build/C/man3/dl_iterate_phdr.3:31
62 #, no-wrap
63 msgid ""
64 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
65 "B<#include E<lt>link.hE<gt>>\n"
66 msgstr ""
67
68 #. type: Plain text
69 #: build/C/man3/dl_iterate_phdr.3:37
70 #, no-wrap
71 msgid ""
72 "B<int dl_iterate_phdr(>\n"
73 "          B<int (*>callbackB<) (struct dl_phdr_info *>infoB<,>\n"
74 "                           B<size_t> sizeB<, void *>dataB<),>\n"
75 "          B<void *>dataB<);>\n"
76 msgstr ""
77
78 #. type: SH
79 #: build/C/man3/dl_iterate_phdr.3:38 build/C/man3/dlopen.3:51 build/C/man5/elf.5:41 build/C/man3/end.3:34 build/C/man8/ld.so.8:15 build/C/man8/ldconfig.8:54 build/C/man1/ldd.1:15 build/C/man7/rtld-audit.7:33
80 #, no-wrap
81 msgid "DESCRIPTION"
82 msgstr ""
83
84 #. type: Plain text
85 #: build/C/man3/dl_iterate_phdr.3:43
86 msgid ""
87 "The B<dl_iterate_phdr>()  function allows an application to inquire at run "
88 "time to find out which shared objects it has loaded."
89 msgstr ""
90
91 #. type: Plain text
92 #: build/C/man3/dl_iterate_phdr.3:53
93 msgid ""
94 "The B<dl_iterate_phdr>()  function walks through the list of an "
95 "application's shared objects and calls the function I<callback> once for "
96 "each object, until either all shared objects have been processed or "
97 "I<callback> returns a nonzero value."
98 msgstr ""
99
100 #. type: Plain text
101 #: build/C/man3/dl_iterate_phdr.3:70
102 msgid ""
103 "Each call to I<callback> receives three arguments: I<info>, which is a "
104 "pointer to a structure containing information about the shared object; "
105 "I<size>, which is the size of the structure pointed to by I<info>; and "
106 "I<data>, which is a copy of whatever value was passed by the calling program "
107 "as the second argument (also named I<data>)  in the call to "
108 "B<dl_iterate_phdr>()."
109 msgstr ""
110
111 #. type: Plain text
112 #: build/C/man3/dl_iterate_phdr.3:74
113 msgid "The I<info> argument is a structure of the following type:"
114 msgstr ""
115
116 #. type: Plain text
117 #: build/C/man3/dl_iterate_phdr.3:86
118 #, no-wrap
119 msgid ""
120 "struct dl_phdr_info {\n"
121 "    ElfW(Addr)        dlpi_addr;  /* Base address of object */\n"
122 "    const char       *dlpi_name;  /* (Null-terminated) name of\n"
123 "                                     object */\n"
124 "    const ElfW(Phdr) *dlpi_phdr;  /* Pointer to array of\n"
125 "                                     ELF program headers\n"
126 "                                     for this object */\n"
127 "    ElfW(Half)        dlpi_phnum; /* # of items in I<dlpi_phdr> */\n"
128 "};\n"
129 msgstr ""
130
131 #. type: Plain text
132 #: build/C/man3/dl_iterate_phdr.3:98
133 msgid ""
134 "(The I<ElfW>()  macro definition turns its argument into the name of an ELF "
135 "data type suitable for the hardware architecture.  For example, on a 32-bit "
136 "platform, ElfW(Addr) yields the data type name Elf32_Addr.  Further "
137 "information on these types can be found in the I<E<lt>elf.hE<gt>> and "
138 "I<E<lt>link.hE<gt>> header files.)"
139 msgstr ""
140
141 #. type: Plain text
142 #: build/C/man3/dl_iterate_phdr.3:109
143 msgid ""
144 "The I<dlpi_addr> field indicates the base address of the shared object "
145 "(i.e., the difference between the virtual memory address of the shared "
146 "object and the offset of that object in the file from which it was loaded).  "
147 "The I<dlpi_name> field is a null-terminated string giving the pathname from "
148 "which the shared object was loaded."
149 msgstr ""
150
151 #. type: Plain text
152 #: build/C/man3/dl_iterate_phdr.3:124
153 msgid ""
154 "To understand the meaning of the I<dlpi_phdr> and I<dlpi_phnum> fields, we "
155 "need to be aware that an ELF shared object consists of a number of segments, "
156 "each of which has a corresponding program header describing the segment.  "
157 "The I<dlpi_phdr> field is a pointer to an array of the program headers for "
158 "this shared object.  The I<dlpi_phnum> field indicates the size of this "
159 "array."
160 msgstr ""
161
162 #. type: Plain text
163 #: build/C/man3/dl_iterate_phdr.3:126
164 msgid "These program headers are structures of the following form:"
165 msgstr ""
166
167 #. type: Plain text
168 #: build/C/man3/dl_iterate_phdr.3:139
169 #, no-wrap
170 msgid ""
171 "typedef struct {\n"
172 "    Elf32_Word  p_type;    /* Segment type */\n"
173 "    Elf32_Off   p_offset;  /* Segment file offset */\n"
174 "    Elf32_Addr  p_vaddr;   /* Segment virtual address */\n"
175 "    Elf32_Addr  p_paddr;   /* Segment physical address */\n"
176 "    Elf32_Word  p_filesz;  /* Segment size in file */\n"
177 "    Elf32_Word  p_memsz;   /* Segment size in memory */\n"
178 "    Elf32_Word  p_flags;   /* Segment flags */\n"
179 "    Elf32_Word  p_align;   /* Segment alignment */\n"
180 "} Elf32_Phdr;\n"
181 msgstr ""
182
183 #. type: Plain text
184 #: build/C/man3/dl_iterate_phdr.3:145
185 msgid ""
186 "Note that we can calculate the location of a particular program header, "
187 "I<x>, in virtual memory using the formula:"
188 msgstr ""
189
190 #. type: Plain text
191 #: build/C/man3/dl_iterate_phdr.3:148
192 #, no-wrap
193 msgid "  addr == info-E<gt>dlpi_addr + info-E<gt>dlpi_phdr[x].p_vaddr;\n"
194 msgstr ""
195
196 #. type: SH
197 #: build/C/man3/dl_iterate_phdr.3:149
198 #, no-wrap
199 msgid "RETURN VALUE"
200 msgstr ""
201
202 #. type: Plain text
203 #: build/C/man3/dl_iterate_phdr.3:154
204 msgid ""
205 "The B<dl_iterate_phdr>()  function returns whatever value was returned by "
206 "the last call to I<callback>."
207 msgstr ""
208
209 #. type: SH
210 #: build/C/man3/dl_iterate_phdr.3:154
211 #, no-wrap
212 msgid "VERSIONS"
213 msgstr ""
214
215 #. type: Plain text
216 #: build/C/man3/dl_iterate_phdr.3:157
217 msgid "B<dl_iterate_phdr>()  has been supported in glibc since version 2.2.4."
218 msgstr ""
219
220 #. type: SH
221 #: build/C/man3/dl_iterate_phdr.3:157 build/C/man3/dlopen.3:381 build/C/man3/end.3:49 build/C/man7/rtld-audit.7:459
222 #, no-wrap
223 msgid "CONFORMING TO"
224 msgstr ""
225
226 #. type: Plain text
227 #: build/C/man3/dl_iterate_phdr.3:161
228 msgid ""
229 "The B<dl_iterate_phdr>()  function is Linux-specific and should be avoided "
230 "in portable applications."
231 msgstr ""
232
233 #. type: SH
234 #: build/C/man3/dl_iterate_phdr.3:161 build/C/man3/dlopen.3:446 build/C/man3/end.3:75 build/C/man7/rtld-audit.7:490
235 #, no-wrap
236 msgid "EXAMPLE"
237 msgstr ""
238
239 #. type: Plain text
240 #: build/C/man3/dl_iterate_phdr.3:166
241 msgid ""
242 "The following program displays a list of pathnames of the shared objects it "
243 "has loaded.  For each shared object, the program lists the virtual addresses "
244 "at which the object's ELF segments are loaded."
245 msgstr ""
246
247 #. type: Plain text
248 #: build/C/man3/dl_iterate_phdr.3:172
249 #, no-wrap
250 msgid ""
251 "#define _GNU_SOURCE\n"
252 "#include E<lt>link.hE<gt>\n"
253 "#include E<lt>stdlib.hE<gt>\n"
254 "#include E<lt>stdio.hE<gt>\n"
255 msgstr ""
256
257 #. type: Plain text
258 #: build/C/man3/dl_iterate_phdr.3:177
259 #, no-wrap
260 msgid ""
261 "static int\n"
262 "callback(struct dl_phdr_info *info, size_t size, void *data)\n"
263 "{\n"
264 "    int j;\n"
265 msgstr ""
266
267 #. type: Plain text
268 #: build/C/man3/dl_iterate_phdr.3:180
269 #, no-wrap
270 msgid ""
271 "    printf(\"name=%s (%d segments)\\en\", info-E<gt>dlpi_name,\n"
272 "        info-E<gt>dlpi_phnum);\n"
273 msgstr ""
274
275 #. type: Plain text
276 #: build/C/man3/dl_iterate_phdr.3:186
277 #, no-wrap
278 msgid ""
279 "    for (j = 0; j E<lt> info-E<gt>dlpi_phnum; j++)\n"
280 "         printf(\"\\et\\et header %2d: address=%10p\\en\", j,\n"
281 "             (void *) (info-E<gt>dlpi_addr + "
282 "info-E<gt>dlpi_phdr[j].p_vaddr));\n"
283 "    return 0;\n"
284 "}\n"
285 msgstr ""
286
287 #. type: Plain text
288 #: build/C/man3/dl_iterate_phdr.3:191
289 #, no-wrap
290 msgid ""
291 "int\n"
292 "main(int argc, char *argv[])\n"
293 "{\n"
294 "    dl_iterate_phdr(callback, NULL);\n"
295 msgstr ""
296
297 #. type: Plain text
298 #: build/C/man3/dl_iterate_phdr.3:194 build/C/man3/end.3:106
299 #, no-wrap
300 msgid ""
301 "    exit(EXIT_SUCCESS);\n"
302 "}\n"
303 msgstr ""
304
305 #. type: SH
306 #: build/C/man3/dl_iterate_phdr.3:195 build/C/man3/dlopen.3:507 build/C/man5/elf.5:1934 build/C/man3/end.3:107 build/C/man8/ld.so.8:373 build/C/man8/ldconfig.8:175 build/C/man1/ldd.1:75 build/C/man7/rtld-audit.7:600
307 #, no-wrap
308 msgid "SEE ALSO"
309 msgstr ""
310
311 #. type: Plain text
312 #: build/C/man3/dl_iterate_phdr.3:205
313 msgid ""
314 "B<ldd>(1), B<objdump>(1), B<readelf>(1), B<dlopen>(3), B<elf>(5), "
315 "B<ld.so>(8), and the I<Executable and Linking Format Specification> "
316 "available at various locations online."
317 msgstr ""
318
319 #. type: SH
320 #: build/C/man3/dl_iterate_phdr.3:205 build/C/man3/dlopen.3:515 build/C/man5/elf.5:1958 build/C/man3/end.3:112 build/C/man8/ld.so.8:383 build/C/man8/ldconfig.8:178 build/C/man1/ldd.1:78 build/C/man7/rtld-audit.7:605
321 #, no-wrap
322 msgid "COLOPHON"
323 msgstr ""
324
325 #. type: Plain text
326 #: build/C/man3/dl_iterate_phdr.3:212 build/C/man3/dlopen.3:522 build/C/man5/elf.5:1965 build/C/man3/end.3:119 build/C/man8/ld.so.8:390 build/C/man8/ldconfig.8:185 build/C/man1/ldd.1:85 build/C/man7/rtld-audit.7:612
327 msgid ""
328 "This page is part of release 3.37 of the Linux I<man-pages> project.  A "
329 "description of the project, and information about reporting bugs, can be "
330 "found at http://www.kernel.org/doc/man-pages/."
331 msgstr ""
332
333 #. type: TH
334 #: build/C/man3/dlopen.3:35
335 #, no-wrap
336 msgid "DLOPEN"
337 msgstr ""
338
339 #. type: TH
340 #: build/C/man3/dlopen.3:35
341 #, no-wrap
342 msgid "2008-12-06"
343 msgstr ""
344
345 #. type: TH
346 #: build/C/man3/dlopen.3:35 build/C/man5/elf.5:33 build/C/man7/rtld-audit.7:26
347 #, no-wrap
348 msgid "Linux"
349 msgstr ""
350
351 #. type: Plain text
352 #: build/C/man3/dlopen.3:39
353 msgid ""
354 "dladdr, dlclose, dlerror, dlopen, dlsym, dlvsym - programming interface to "
355 "dynamic linking loader"
356 msgstr ""
357
358 #. type: Plain text
359 #: build/C/man3/dlopen.3:41
360 msgid "B<#include E<lt>dlfcn.hE<gt>>"
361 msgstr ""
362
363 #. type: Plain text
364 #: build/C/man3/dlopen.3:43
365 msgid "B<void *dlopen(const char *>I<filename>B<, int >I<flag>B<);>"
366 msgstr ""
367
368 #. type: Plain text
369 #: build/C/man3/dlopen.3:45
370 msgid "B<char *dlerror(void);>"
371 msgstr ""
372
373 #. type: Plain text
374 #: build/C/man3/dlopen.3:47
375 msgid "B<void *dlsym(void *>I<handle>B<, const char *>I<symbol>B<);>"
376 msgstr ""
377
378 #. type: Plain text
379 #: build/C/man3/dlopen.3:49
380 msgid "B<int dlclose(void *>I<handle>B<);>"
381 msgstr ""
382
383 #. type: Plain text
384 #: build/C/man3/dlopen.3:51
385 msgid "Link with I<-ldl>."
386 msgstr ""
387
388 #. type: Plain text
389 #: build/C/man3/dlopen.3:58
390 msgid ""
391 "The four functions B<dlopen>(), B<dlsym>(), B<dlclose>(), B<dlerror>()  "
392 "implement the interface to the dynamic linking loader."
393 msgstr ""
394
395 #. type: SS
396 #: build/C/man3/dlopen.3:58
397 #, no-wrap
398 msgid "dlerror()"
399 msgstr ""
400
401 #. type: Plain text
402 #: build/C/man3/dlopen.3:71
403 msgid ""
404 "The function B<dlerror>()  returns a human readable string describing the "
405 "most recent error that occurred from B<dlopen>(), B<dlsym>()  or "
406 "B<dlclose>()  since the last call to B<dlerror>().  It returns NULL if no "
407 "errors have occurred since initialization or since it was last called."
408 msgstr ""
409
410 #. type: SS
411 #: build/C/man3/dlopen.3:71
412 #, no-wrap
413 msgid "dlopen()"
414 msgstr ""
415
416 #. type: Plain text
417 #: build/C/man3/dlopen.3:89
418 msgid ""
419 "The function B<dlopen>()  loads the dynamic library file named by the "
420 "null-terminated string I<filename> and returns an opaque \"handle\" for the "
421 "dynamic library.  If I<filename> is NULL, then the returned handle is for "
422 "the main program.  If I<filename> contains a slash (\"/\"), then it is "
423 "interpreted as a (relative or absolute) pathname.  Otherwise, the dynamic "
424 "linker searches for the library as follows (see B<ld.so>(8)  for further "
425 "details):"
426 msgstr ""
427
428 #. type: IP
429 #: build/C/man3/dlopen.3:89 build/C/man3/dlopen.3:93 build/C/man3/dlopen.3:100 build/C/man3/dlopen.3:104 build/C/man3/dlopen.3:111 build/C/man8/ld.so.8:45 build/C/man8/ld.so.8:50 build/C/man8/ld.so.8:55 build/C/man8/ld.so.8:59 build/C/man8/ld.so.8:67
430 #, no-wrap
431 msgid "o"
432 msgstr ""
433
434 #. type: Plain text
435 #: build/C/man3/dlopen.3:93
436 msgid ""
437 "(ELF only) If the executable file for the calling program contains a "
438 "DT_RPATH tag, and does not contain a DT_RUNPATH tag, then the directories "
439 "listed in the DT_RPATH tag are searched."
440 msgstr ""
441
442 #. type: Plain text
443 #: build/C/man3/dlopen.3:100
444 msgid ""
445 "If, at the time that the program was started, the environment variable "
446 "B<LD_LIBRARY_PATH> was defined to contain a colon-separated list of "
447 "directories, then these are searched.  (As a security measure this variable "
448 "is ignored for set-user-ID and set-group-ID programs.)"
449 msgstr ""
450
451 #. type: Plain text
452 #: build/C/man3/dlopen.3:104
453 msgid ""
454 "(ELF only) If the executable file for the calling program contains a "
455 "DT_RUNPATH tag, then the directories listed in that tag are searched."
456 msgstr ""
457
458 #. type: Plain text
459 #: build/C/man3/dlopen.3:111
460 msgid ""
461 "The cache file I</etc/ld.so.cache> (maintained by B<ldconfig>(8))  is "
462 "checked to see whether it contains an entry for I<filename>."
463 msgstr ""
464
465 #. type: Plain text
466 #: build/C/man3/dlopen.3:117
467 msgid "The directories I</lib> and I</usr/lib> are searched (in that order)."
468 msgstr ""
469
470 #. type: Plain text
471 #: build/C/man3/dlopen.3:123
472 msgid ""
473 "If the library has dependencies on other shared libraries, then these are "
474 "also automatically loaded by the dynamic linker using the same rules.  (This "
475 "process may occur recursively, if those libraries in turn have dependencies, "
476 "and so on.)"
477 msgstr ""
478
479 #. type: Plain text
480 #: build/C/man3/dlopen.3:126
481 msgid "One of the following two values must be included in I<flag>:"
482 msgstr ""
483
484 #. type: TP
485 #: build/C/man3/dlopen.3:126
486 #, no-wrap
487 msgid "B<RTLD_LAZY>"
488 msgstr ""
489
490 #. type: Plain text
491 #: build/C/man3/dlopen.3:134
492 msgid ""
493 "Perform lazy binding.  Only resolve symbols as the code that references them "
494 "is executed.  If the symbol is never referenced, then it is never resolved.  "
495 "(Lazy binding is only performed for function references; references to "
496 "variables are always immediately bound when the library is loaded.)"
497 msgstr ""
498
499 #. type: TP
500 #: build/C/man3/dlopen.3:134
501 #, no-wrap
502 msgid "B<RTLD_NOW>"
503 msgstr ""
504
505 #. type: Plain text
506 #: build/C/man3/dlopen.3:143
507 msgid ""
508 "If this value is specified, or the environment variable B<LD_BIND_NOW> is "
509 "set to a nonempty string, all undefined symbols in the library are resolved "
510 "before B<dlopen>()  returns.  If this cannot be done, an error is returned."
511 msgstr ""
512
513 #. type: Plain text
514 #: build/C/man3/dlopen.3:146
515 msgid "Zero or more of the following values may also be ORed in I<flag>:"
516 msgstr ""
517
518 #. type: TP
519 #: build/C/man3/dlopen.3:146
520 #, no-wrap
521 msgid "B<RTLD_GLOBAL>"
522 msgstr ""
523
524 #. type: Plain text
525 #: build/C/man3/dlopen.3:150
526 msgid ""
527 "The symbols defined by this library will be made available for symbol "
528 "resolution of subsequently loaded libraries."
529 msgstr ""
530
531 #. type: TP
532 #: build/C/man3/dlopen.3:150
533 #, no-wrap
534 msgid "B<RTLD_LOCAL>"
535 msgstr ""
536
537 #. type: Plain text
538 #: build/C/man3/dlopen.3:157
539 msgid ""
540 "This is the converse of B<RTLD_GLOBAL>, and the default if neither flag is "
541 "specified.  Symbols defined in this library are not made available to "
542 "resolve references in subsequently loaded libraries."
543 msgstr ""
544
545 #. type: TP
546 #: build/C/man3/dlopen.3:157
547 #, no-wrap
548 msgid "B<RTLD_NODELETE> (since glibc 2.2)"
549 msgstr ""
550
551 #.  (But it is present on Solaris.)
552 #. type: Plain text
553 #: build/C/man3/dlopen.3:167
554 msgid ""
555 "Do not unload the library during B<dlclose>().  Consequently, the library's "
556 "static variables are not reinitialized if the library is reloaded with "
557 "B<dlopen>()  at a later time.  This flag is not specified in POSIX.1-2001."
558 msgstr ""
559
560 #. type: TP
561 #: build/C/man3/dlopen.3:167
562 #, no-wrap
563 msgid "B<RTLD_NOLOAD> (since glibc 2.2)"
564 msgstr ""
565
566 #.  (But it is present on Solaris.)
567 #. type: Plain text
568 #: build/C/man3/dlopen.3:182
569 msgid ""
570 "Don't load the library.  This can be used to test if the library is already "
571 "resident (B<dlopen>()  returns NULL if it is not, or the library's handle if "
572 "it is resident).  This flag can also be used to promote the flags on a "
573 "library that is already loaded.  For example, a library that was previously "
574 "loaded with B<RTLD_LOCAL> can be reopened with B<RTLD_NOLOAD\\ |\\ "
575 "RTLD_GLOBAL>.  This flag is not specified in POSIX.1-2001."
576 msgstr ""
577
578 #. type: TP
579 #: build/C/man3/dlopen.3:182
580 #, no-wrap
581 msgid "B<RTLD_DEEPBIND> (since glibc 2.3.4)"
582 msgstr ""
583
584 #.  Inimitably described by UD in
585 #.  http://sources.redhat.com/ml/libc-hacker/2004-09/msg00083.html.
586 #. type: Plain text
587 #: build/C/man3/dlopen.3:192
588 msgid ""
589 "Place the lookup scope of the symbols in this library ahead of the global "
590 "scope.  This means that a self-contained library will use its own symbols in "
591 "preference to global symbols with the same name contained in libraries that "
592 "have already been loaded.  This flag is not specified in POSIX.1-2001."
593 msgstr ""
594
595 #. type: Plain text
596 #: build/C/man3/dlopen.3:204
597 msgid ""
598 "If I<filename> is a NULL pointer, then the returned handle is for the main "
599 "program.  When given to B<dlsym>(), this handle causes a search for a symbol "
600 "in the main program, followed by all shared libraries loaded at program "
601 "startup, and then all shared libraries loaded by B<dlopen>()  with the flag "
602 "B<RTLD_GLOBAL>."
603 msgstr ""
604
605 #. type: Plain text
606 #: build/C/man3/dlopen.3:214
607 msgid ""
608 "External references in the library are resolved using the libraries in that "
609 "library's dependency list and any other libraries previously opened with the "
610 "B<RTLD_GLOBAL> flag.  If the executable was linked with the flag "
611 "\"-rdynamic\" (or, synonymously, \"--export-dynamic\"), then the global "
612 "symbols in the executable will also be used to resolve references in a "
613 "dynamically loaded library."
614 msgstr ""
615
616 #. type: Plain text
617 #: build/C/man3/dlopen.3:232
618 msgid ""
619 "If the same library is loaded again with B<dlopen>(), the same file handle "
620 "is returned.  The dl library maintains reference counts for library handles, "
621 "so a dynamic library is not deallocated until B<dlclose>()  has been called "
622 "on it as many times as B<dlopen>()  has succeeded on it.  The B<_init>()  "
623 "routine, if present, is only called once.  But a subsequent call with "
624 "B<RTLD_NOW> may force symbol resolution for a library earlier loaded with "
625 "B<RTLD_LAZY>."
626 msgstr ""
627
628 #. type: Plain text
629 #: build/C/man3/dlopen.3:236
630 msgid "If B<dlopen>()  fails for any reason, it returns NULL."
631 msgstr ""
632
633 #. type: SS
634 #: build/C/man3/dlopen.3:236
635 #, no-wrap
636 msgid "dlsym()"
637 msgstr ""
638
639 #. type: Plain text
640 #: build/C/man3/dlopen.3:265
641 msgid ""
642 "The function B<dlsym>()  takes a \"handle\" of a dynamic library returned by "
643 "B<dlopen>()  and the null-terminated symbol name, returning the address "
644 "where that symbol is loaded into memory.  If the symbol is not found, in the "
645 "specified library or any of the libraries that were automatically loaded by "
646 "B<dlopen>()  when that library was loaded, B<dlsym>()  returns NULL.  (The "
647 "search performed by B<dlsym>()  is breadth first through the dependency tree "
648 "of these libraries.)  Since the value of the symbol could actually be NULL "
649 "(so that a NULL return from B<dlsym>()  need not indicate an error), the "
650 "correct way to test for an error is to call B<dlerror>()  to clear any old "
651 "error conditions, then call B<dlsym>(), and then call B<dlerror>()  again, "
652 "saving its return value into a variable, and check whether this saved value "
653 "is not NULL."
654 msgstr ""
655
656 #. type: Plain text
657 #: build/C/man3/dlopen.3:277
658 msgid ""
659 "There are two special pseudo-handles, B<RTLD_DEFAULT> and B<RTLD_NEXT>.  The "
660 "former will find the first occurrence of the desired symbol using the "
661 "default library search order.  The latter will find the next occurrence of a "
662 "function in the search order after the current library.  This allows one to "
663 "provide a wrapper around a function in another shared library."
664 msgstr ""
665
666 #. type: SS
667 #: build/C/man3/dlopen.3:277
668 #, no-wrap
669 msgid "dlclose()"
670 msgstr ""
671
672 #. type: Plain text
673 #: build/C/man3/dlopen.3:284
674 msgid ""
675 "The function B<dlclose>()  decrements the reference count on the dynamic "
676 "library handle I<handle>.  If the reference count drops to zero and no other "
677 "loaded libraries use symbols in it, then the dynamic library is unloaded."
678 msgstr ""
679
680 #. type: Plain text
681 #: build/C/man3/dlopen.3:288
682 msgid "The function B<dlclose>()  returns 0 on success, and nonzero on error."
683 msgstr ""
684
685 #. type: SS
686 #: build/C/man3/dlopen.3:288
687 #, no-wrap
688 msgid "The obsolete symbols _init() and _fini()"
689 msgstr ""
690
691 #. type: Plain text
692 #: build/C/man3/dlopen.3:306
693 msgid ""
694 "The linker recognizes special symbols B<_init> and B<_fini>.  If a dynamic "
695 "library exports a routine named B<_init>(), then that code is executed after "
696 "the loading, before B<dlopen>()  returns.  If the dynamic library exports a "
697 "routine named B<_fini>(), then that routine is called just before the "
698 "library is unloaded.  In case you need to avoid linking against the system "
699 "startup files, this can be done by using the B<gcc>(1)  I<-nostartfiles> "
700 "command-line option."
701 msgstr ""
702
703 #.  void _init(void) __attribute__((constructor));
704 #.  void _fini(void) __attribute__((destructor));
705 #. type: Plain text
706 #: build/C/man3/dlopen.3:317
707 msgid ""
708 "Using these routines, or the gcc B<-nostartfiles> or B<-nostdlib> options, "
709 "is not recommended.  Their use may result in undesired behavior, since the "
710 "constructor/destructor routines will not be executed (unless special "
711 "measures are taken)."
712 msgstr ""
713
714 #. type: Plain text
715 #: build/C/man3/dlopen.3:329
716 msgid ""
717 "Instead, libraries should export routines using the "
718 "B<__attribute__((constructor))> and B<__attribute__((destructor))> function "
719 "attributes.  See the gcc info pages for information on these.  Constructor "
720 "routines are executed before B<dlopen>()  returns, and destructor routines "
721 "are executed before B<dlclose>()  returns."
722 msgstr ""
723
724 #. type: SS
725 #: build/C/man3/dlopen.3:329
726 #, no-wrap
727 msgid "Glibc extensions: dladdr() and dlvsym()"
728 msgstr ""
729
730 #. type: Plain text
731 #: build/C/man3/dlopen.3:331
732 msgid "Glibc adds two functions not described by POSIX, with prototypes"
733 msgstr ""
734
735 #. type: Plain text
736 #: build/C/man3/dlopen.3:335
737 #, no-wrap
738 msgid ""
739 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
740 "B<#include E<lt>dlfcn.hE<gt>>\n"
741 msgstr ""
742
743 #. type: Plain text
744 #: build/C/man3/dlopen.3:337
745 #, no-wrap
746 msgid "B<int dladdr(void *>I<addr>B<, Dl_info *>I<info>B<);>\n"
747 msgstr ""
748
749 #. type: Plain text
750 #: build/C/man3/dlopen.3:339
751 #, no-wrap
752 msgid ""
753 "B<void *dlvsym(void *>I<handle>B<, char *>I<symbol>B<, char "
754 "*>I<version>B<);>\n"
755 msgstr ""
756
757 #. type: Plain text
758 #: build/C/man3/dlopen.3:348
759 msgid ""
760 "The function B<dladdr>()  takes a function pointer and tries to resolve name "
761 "and file where it is located.  Information is stored in the I<Dl_info> "
762 "structure:"
763 msgstr ""
764
765 #. type: Plain text
766 #: build/C/man3/dlopen.3:361
767 #, no-wrap
768 msgid ""
769 "typedef struct {\n"
770 "    const char *dli_fname;  /* Pathname of shared object that\n"
771 "                               contains address */\n"
772 "    void       *dli_fbase;  /* Address at which shared object\n"
773 "                               is loaded */\n"
774 "    const char *dli_sname;  /* Name of nearest symbol with address\n"
775 "                               lower than I<addr> */\n"
776 "    void       *dli_saddr;  /* Exact address of symbol named\n"
777 "                               in I<dli_sname> */\n"
778 "} Dl_info;\n"
779 msgstr ""
780
781 #. type: Plain text
782 #: build/C/man3/dlopen.3:371
783 msgid ""
784 "If no symbol matching I<addr> could be found, then I<dli_sname> and "
785 "I<dli_saddr> are set to NULL."
786 msgstr ""
787
788 #. type: Plain text
789 #: build/C/man3/dlopen.3:374
790 msgid "B<dladdr>()  returns 0 on error, and nonzero on success."
791 msgstr ""
792
793 #. type: Plain text
794 #: build/C/man3/dlopen.3:381
795 msgid ""
796 "The function B<dlvsym>(), provided by glibc since version 2.1, does the same "
797 "as B<dlsym>()  but takes a version string as an additional argument."
798 msgstr ""
799
800 #. type: Plain text
801 #: build/C/man3/dlopen.3:388
802 msgid ""
803 "POSIX.1-2001 describes B<dlclose>(), B<dlerror>(), B<dlopen>(), and "
804 "B<dlsym>()."
805 msgstr ""
806
807 #. type: SH
808 #: build/C/man3/dlopen.3:388 build/C/man5/elf.5:1907 build/C/man3/end.3:52 build/C/man8/ld.so.8:367 build/C/man1/ldd.1:42 build/C/man7/rtld-audit.7:465
809 #, no-wrap
810 msgid "NOTES"
811 msgstr ""
812
813 #.  .LP
814 #.  The string returned by
815 #.  .BR dlerror ()
816 #.  should not be modified.
817 #.  Some systems give the prototype as
818 #.  .sp
819 #.  .in +5
820 #.  .B "const char *dlerror(void);"
821 #.  .in
822 #. type: Plain text
823 #: build/C/man3/dlopen.3:407
824 msgid ""
825 "The symbols B<RTLD_DEFAULT> and B<RTLD_NEXT> are defined by "
826 "I<E<lt>dlfcn.hE<gt>> only when B<_GNU_SOURCE> was defined before including "
827 "it."
828 msgstr ""
829
830 #. type: Plain text
831 #: build/C/man3/dlopen.3:412
832 msgid ""
833 "Since glibc 2.2.3, B<atexit>(3)  can be used to register an exit handler "
834 "that is automatically called when a library is unloaded."
835 msgstr ""
836
837 #. type: SS
838 #: build/C/man3/dlopen.3:412
839 #, no-wrap
840 msgid "History"
841 msgstr ""
842
843 #. type: Plain text
844 #: build/C/man3/dlopen.3:418
845 msgid ""
846 "The dlopen interface standard comes from SunOS.  That system also has "
847 "B<dladdr>(), but not B<dlvsym>()."
848 msgstr ""
849
850 #. type: SH
851 #: build/C/man3/dlopen.3:418 build/C/man1/ldd.1:59 build/C/man7/rtld-audit.7:590
852 #, no-wrap
853 msgid "BUGS"
854 msgstr ""
855
856 #. type: Plain text
857 #: build/C/man3/dlopen.3:430
858 msgid ""
859 "Sometimes, the function pointers you pass to B<dladdr>()  may surprise you.  "
860 "On some architectures (notably i386 and x86_64), I<dli_fname> and "
861 "I<dli_fbase> may end up pointing back at the object from which you called "
862 "B<dladdr>(), even if the function used as an argument should come from a "
863 "dynamically linked library."
864 msgstr ""
865
866 #. type: Plain text
867 #: build/C/man3/dlopen.3:446
868 msgid ""
869 "The problem is that the function pointer will still be resolved at compile "
870 "time, but merely point to the I<plt> (Procedure Linkage Table)  section of "
871 "the original object (which dispatches the call after asking the dynamic "
872 "linker to resolve the symbol).  To work around this, you can try to compile "
873 "the code to be position-independent: then, the compiler cannot prepare the "
874 "pointer at compile time anymore and today's B<gcc>(1)  will generate code "
875 "that just loads the final symbol address from the I<got> (Global Offset "
876 "Table) at run time before passing it to B<dladdr>()."
877 msgstr ""
878
879 #. type: Plain text
880 #: build/C/man3/dlopen.3:448
881 msgid "Load the math library, and print the cosine of 2.0:"
882 msgstr ""
883
884 #. type: Plain text
885 #: build/C/man3/dlopen.3:453
886 #, no-wrap
887 msgid ""
888 "#include E<lt>stdio.hE<gt>\n"
889 "#include E<lt>stdlib.hE<gt>\n"
890 "#include E<lt>dlfcn.hE<gt>\n"
891 msgstr ""
892
893 #. type: Plain text
894 #: build/C/man3/dlopen.3:460
895 #, no-wrap
896 msgid ""
897 "int\n"
898 "main(int argc, char **argv)\n"
899 "{\n"
900 "    void *handle;\n"
901 "    double (*cosine)(double);\n"
902 "    char *error;\n"
903 msgstr ""
904
905 #. type: Plain text
906 #: build/C/man3/dlopen.3:466
907 #, no-wrap
908 msgid ""
909 "    handle = dlopen(\"libm.so\", RTLD_LAZY);\n"
910 "    if (!handle) {\n"
911 "        fprintf(stderr, \"%s\\en\", dlerror());\n"
912 "        exit(EXIT_FAILURE);\n"
913 "    }\n"
914 msgstr ""
915
916 #. type: Plain text
917 #: build/C/man3/dlopen.3:468
918 #, no-wrap
919 msgid "    dlerror();    /* Clear any existing error */\n"
920 msgstr ""
921
922 #. type: Plain text
923 #: build/C/man3/dlopen.3:475
924 #, no-wrap
925 msgid ""
926 "    /* Writing: cosine = (double (*)(double)) dlsym(handle, \"cos\");\n"
927 "       would seem more natural, but the C99 standard leaves\n"
928 "       casting from \"void *\" to a function pointer undefined.\n"
929 "       The assignment used below is the POSIX.1-2003 (Technical\n"
930 "       Corrigendum 1) workaround; see the Rationale for the\n"
931 "       POSIX specification of dlsym(). */\n"
932 msgstr ""
933
934 #.  But in fact "gcc -O2 -Wall" will complain about the preceding cast.
935 #. type: Plain text
936 #: build/C/man3/dlopen.3:478
937 #, no-wrap
938 msgid "    *(void **) (&cosine) = dlsym(handle, \"cos\");\n"
939 msgstr ""
940
941 #. type: Plain text
942 #: build/C/man3/dlopen.3:483
943 #, no-wrap
944 msgid ""
945 "    if ((error = dlerror()) != NULL)  {\n"
946 "        fprintf(stderr, \"%s\\en\", error);\n"
947 "        exit(EXIT_FAILURE);\n"
948 "    }\n"
949 msgstr ""
950
951 #. type: Plain text
952 #: build/C/man3/dlopen.3:488
953 #, no-wrap
954 msgid ""
955 "    printf(\"%f\\en\", (*cosine)(2.0));\n"
956 "    dlclose(handle);\n"
957 "    exit(EXIT_SUCCESS);\n"
958 "}\n"
959 msgstr ""
960
961 #. type: Plain text
962 #: build/C/man3/dlopen.3:492
963 msgid ""
964 "If this program were in a file named \"foo.c\", you would build the program "
965 "with the following command:"
966 msgstr ""
967
968 #. type: Plain text
969 #: build/C/man3/dlopen.3:495
970 #, no-wrap
971 msgid "    gcc -rdynamic -o foo foo.c -ldl\n"
972 msgstr ""
973
974 #. type: Plain text
975 #: build/C/man3/dlopen.3:503
976 msgid ""
977 "Libraries exporting B<_init>()  and B<_fini>()  will want to be compiled as "
978 "follows, using I<bar.c> as the example name:"
979 msgstr ""
980
981 #. type: Plain text
982 #: build/C/man3/dlopen.3:506
983 #, no-wrap
984 msgid "    gcc -shared -nostartfiles -o bar bar.c\n"
985 msgstr ""
986
987 #. type: Plain text
988 #: build/C/man3/dlopen.3:515
989 msgid ""
990 "B<ld>(1), B<ldd>(1), B<dl_iterate_phdr>(3), B<rtld-audit>(7), B<ld.so>(8), "
991 "B<ldconfig>(8), ld.so info pages, gcc info pages, ld info pages"
992 msgstr ""
993
994 #. type: TH
995 #: build/C/man5/elf.5:33
996 #, no-wrap
997 msgid "ELF"
998 msgstr ""
999
1000 #. type: TH
1001 #: build/C/man5/elf.5:33
1002 #, no-wrap
1003 msgid "2010-06-19"
1004 msgstr ""
1005
1006 #. type: Plain text
1007 #: build/C/man5/elf.5:36
1008 msgid "elf - format of Executable and Linking Format (ELF) files"
1009 msgstr ""
1010
1011 #.  .B #include <elf_abi.h>
1012 #. type: Plain text
1013 #: build/C/man5/elf.5:40
1014 #, no-wrap
1015 msgid "B<#include E<lt>elf.hE<gt>>\n"
1016 msgstr ""
1017
1018 #. type: Plain text
1019 #: build/C/man5/elf.5:48
1020 msgid ""
1021 "The header file I<E<lt>elf.hE<gt>> defines the format of ELF executable "
1022 "binary files.  Amongst these files are normal executable files, relocatable "
1023 "object files, core files and shared libraries."
1024 msgstr ""
1025
1026 #. type: Plain text
1027 #: build/C/man5/elf.5:57
1028 msgid ""
1029 "An executable file using the ELF file format consists of an ELF header, "
1030 "followed by a program header table or a section header table, or both.  The "
1031 "ELF header is always at offset zero of the file.  The program header table "
1032 "and the section header table's offset in the file are defined in the ELF "
1033 "header.  The two tables describe the rest of the particularities of the "
1034 "file."
1035 msgstr ""
1036
1037 #.  Applications which wish to process ELF binary files for their native
1038 #.  architecture only should include
1039 #.  .I <elf_abi.h>
1040 #.  in their source code.
1041 #.  These applications should need to refer to
1042 #.  all the types and structures by their generic names
1043 #.  "Elf_xxx"
1044 #.  and to the macros by
1045 #.  ELF_xxx".
1046 #.  Applications written this way can be compiled on any architecture,
1047 #.  regardless of whether the host is 32-bit or 64-bit.
1048 #.  .PP
1049 #.  Should an application need to process ELF files of an unknown
1050 #.  architecture, then the application needs to explicitly use either
1051 #.  "Elf32_xxx"
1052 #.  or
1053 #.  "Elf64_xxx"
1054 #.  type and structure names.
1055 #.  Likewise, the macros need to be identified by
1056 #.  "ELF32_xxx"
1057 #.  or
1058 #.  "ELF64_xxx".
1059 #.  .PP
1060 #. type: Plain text
1061 #: build/C/man5/elf.5:84
1062 msgid ""
1063 "This header file describes the above mentioned headers as C structures and "
1064 "also includes structures for dynamic sections, relocation sections and "
1065 "symbol tables."
1066 msgstr ""
1067
1068 #. type: Plain text
1069 #: build/C/man5/elf.5:96
1070 msgid ""
1071 "The following types are used for N-bit architectures (N=32,64, I<ElfN> "
1072 "stands for I<Elf32> or I<Elf64>, I<uintN_t> stands for I<uint32_t> or "
1073 "I<uint64_t>):"
1074 msgstr ""
1075
1076 #.  Elf32_Size  Unsigned object size
1077 #. type: Plain text
1078 #: build/C/man5/elf.5:110
1079 #, no-wrap
1080 msgid ""
1081 "ElfN_Addr       Unsigned program address, uintN_t\n"
1082 "ElfN_Off        Unsigned file offset, uintN_t\n"
1083 "ElfN_Section    Unsigned section index, uint16_t\n"
1084 "ElfN_Versym     Unsigned version symbol information, uint16_t\n"
1085 "Elf_Byte        unsigned char\n"
1086 "ElfN_Half       uint16_t\n"
1087 "ElfN_Sword      int32_t\n"
1088 "ElfN_Word       uint32_t\n"
1089 "ElfN_Sxword     int64_t\n"
1090 "ElfN_Xword      uint64_t\n"
1091 msgstr ""
1092
1093 #. type: Plain text
1094 #: build/C/man5/elf.5:125
1095 msgid ""
1096 "(Note: The *BSD terminology is a bit different.  There I<Elf64_Half> is "
1097 "twice as large as I<Elf32_Half>, and I<Elf64Quarter> is used for "
1098 "I<uint16_t>.  In order to avoid confusion these types are replaced by "
1099 "explicit ones in the below.)"
1100 msgstr ""
1101
1102 #. type: Plain text
1103 #: build/C/man5/elf.5:132
1104 msgid ""
1105 "All data structures that the file format defines follow the \"natural\" size "
1106 "and alignment guidelines for the relevant class.  If necessary, data "
1107 "structures contain explicit padding to ensure 4-byte alignment for 4-byte "
1108 "objects, to force structure sizes to a multiple of 4, etc."
1109 msgstr ""
1110
1111 #. type: Plain text
1112 #: build/C/man5/elf.5:137
1113 msgid "The ELF header is described by the type I<Elf32_Ehdr> or I<Elf64_Ehdr>:"
1114 msgstr ""
1115
1116 #. type: Plain text
1117 #: build/C/man5/elf.5:141
1118 #, no-wrap
1119 msgid "#define EI_NIDENT 16\n"
1120 msgstr ""
1121
1122 #. type: Plain text
1123 #: build/C/man5/elf.5:158
1124 #, no-wrap
1125 msgid ""
1126 "typedef struct {\n"
1127 "    unsigned char e_ident[EI_NIDENT];\n"
1128 "    uint16_t      e_type;\n"
1129 "    uint16_t      e_machine;\n"
1130 "    uint32_t      e_version;\n"
1131 "    ElfN_Addr     e_entry;\n"
1132 "    ElfN_Off      e_phoff;\n"
1133 "    ElfN_Off      e_shoff;\n"
1134 "    uint32_t      e_flags;\n"
1135 "    uint16_t      e_ehsize;\n"
1136 "    uint16_t      e_phentsize;\n"
1137 "    uint16_t      e_phnum;\n"
1138 "    uint16_t      e_shentsize;\n"
1139 "    uint16_t      e_shnum;\n"
1140 "    uint16_t      e_shstrndx;\n"
1141 "} ElfN_Ehdr;\n"
1142 msgstr ""
1143
1144 #.  .Bl -tag -width "e_phentsize"
1145 #. type: Plain text
1146 #: build/C/man5/elf.5:163
1147 msgid "The fields have the following meanings:"
1148 msgstr ""
1149
1150 #. type: TP
1151 #: build/C/man5/elf.5:163
1152 #, no-wrap
1153 msgid "I<e_ident>"
1154 msgstr ""
1155
1156 #. type: Plain text
1157 #: build/C/man5/elf.5:173
1158 msgid ""
1159 "This array of bytes specifies to interpret the file, independent of the "
1160 "processor or the file's remaining contents.  Within this array everything is "
1161 "named by macros, which start with the prefix B<EI_> and may contain values "
1162 "which start with the prefix B<ELF>.  The following macros are defined:"
1163 msgstr ""
1164
1165 #. type: TP
1166 #: build/C/man5/elf.5:175
1167 #, no-wrap
1168 msgid "B<EI_MAG0>"
1169 msgstr ""
1170
1171 #. type: Plain text
1172 #: build/C/man5/elf.5:181
1173 msgid ""
1174 "The first byte of the magic number.  It must be filled with B<ELFMAG0>.  (0: "
1175 "0x7f)"
1176 msgstr ""
1177
1178 #. type: TP
1179 #: build/C/man5/elf.5:181
1180 #, no-wrap
1181 msgid "B<EI_MAG1>"
1182 msgstr ""
1183
1184 #. type: Plain text
1185 #: build/C/man5/elf.5:187
1186 msgid ""
1187 "The second byte of the magic number.  It must be filled with B<ELFMAG1>.  "
1188 "(1: \\(aqE\\(aq)"
1189 msgstr ""
1190
1191 #. type: TP
1192 #: build/C/man5/elf.5:187
1193 #, no-wrap
1194 msgid "B<EI_MAG2>"
1195 msgstr ""
1196
1197 #. type: Plain text
1198 #: build/C/man5/elf.5:193
1199 msgid ""
1200 "The third byte of the magic number.  It must be filled with B<ELFMAG2>.  (2: "
1201 "\\(aqL\\(aq)"
1202 msgstr ""
1203
1204 #. type: TP
1205 #: build/C/man5/elf.5:193
1206 #, no-wrap
1207 msgid "B<EI_MAG3>"
1208 msgstr ""
1209
1210 #. type: Plain text
1211 #: build/C/man5/elf.5:199
1212 msgid ""
1213 "The fourth byte of the magic number.  It must be filled with B<ELFMAG3>.  "
1214 "(3: \\(aqF\\(aq)"
1215 msgstr ""
1216
1217 #. type: TP
1218 #: build/C/man5/elf.5:199
1219 #, no-wrap
1220 msgid "B<EI_CLASS>"
1221 msgstr ""
1222
1223 #. type: Plain text
1224 #: build/C/man5/elf.5:202
1225 msgid "The fifth byte identifies the architecture for this binary:"
1226 msgstr ""
1227
1228 #. type: TP
1229 #: build/C/man5/elf.5:204
1230 #, no-wrap
1231 msgid "B<ELFCLASSNONE>"
1232 msgstr ""
1233
1234 #. type: Plain text
1235 #: build/C/man5/elf.5:208
1236 msgid "This class is invalid."
1237 msgstr ""
1238
1239 #. type: TP
1240 #: build/C/man5/elf.5:208
1241 #, no-wrap
1242 msgid "B<ELFCLASS32>"
1243 msgstr ""
1244
1245 #. type: Plain text
1246 #: build/C/man5/elf.5:213
1247 msgid ""
1248 "This defines the 32-bit architecture.  It supports machines with files and "
1249 "virtual address spaces up to 4 Gigabytes."
1250 msgstr ""
1251
1252 #. type: TP
1253 #: build/C/man5/elf.5:213
1254 #, no-wrap
1255 msgid "B<ELFCLASS64>"
1256 msgstr ""
1257
1258 #. type: Plain text
1259 #: build/C/man5/elf.5:216
1260 msgid "This defines the 64-bit architecture."
1261 msgstr ""
1262
1263 #. type: TP
1264 #: build/C/man5/elf.5:219
1265 #, no-wrap
1266 msgid "B<EI_DATA>"
1267 msgstr ""
1268
1269 #.  .Bl -tag -width "ELFDATA2LSB" -compact
1270 #. type: Plain text
1271 #: build/C/man5/elf.5:225
1272 msgid ""
1273 "The sixth byte specifies the data encoding of the processor-specific data in "
1274 "the file.  Currently these encodings are supported:"
1275 msgstr ""
1276
1277 #. type: TP
1278 #: build/C/man5/elf.5:226
1279 #, no-wrap
1280 msgid "B<ELFDATANONE>"
1281 msgstr ""
1282
1283 #. type: Plain text
1284 #: build/C/man5/elf.5:230
1285 msgid "Unknown data format."
1286 msgstr ""
1287
1288 #. type: TP
1289 #: build/C/man5/elf.5:230
1290 #, no-wrap
1291 msgid "B<ELFDATA2LSB>"
1292 msgstr ""
1293
1294 #. type: Plain text
1295 #: build/C/man5/elf.5:233
1296 msgid "Two's complement, little-endian."
1297 msgstr ""
1298
1299 #. type: TP
1300 #: build/C/man5/elf.5:233
1301 #, no-wrap
1302 msgid "B<ELFDATA2MSB>"
1303 msgstr ""
1304
1305 #. type: Plain text
1306 #: build/C/man5/elf.5:236
1307 msgid "Two's complement, big-endian."
1308 msgstr ""
1309
1310 #. type: TP
1311 #: build/C/man5/elf.5:239
1312 #, no-wrap
1313 msgid "B<EI_VERSION>"
1314 msgstr ""
1315
1316 #.  .Bl -tag -width "EV_CURRENT" -compact
1317 #. type: Plain text
1318 #: build/C/man5/elf.5:244
1319 msgid "The version number of the ELF specification:"
1320 msgstr ""
1321
1322 #. type: TP
1323 #: build/C/man5/elf.5:245 build/C/man5/elf.5:498
1324 #, no-wrap
1325 msgid "B<EV_NONE>"
1326 msgstr ""
1327
1328 #. type: Plain text
1329 #: build/C/man5/elf.5:248 build/C/man5/elf.5:502
1330 msgid "Invalid version."
1331 msgstr ""
1332
1333 #. type: TP
1334 #: build/C/man5/elf.5:248 build/C/man5/elf.5:502
1335 #, no-wrap
1336 msgid "B<EV_CURRENT>"
1337 msgstr ""
1338
1339 #.  .El
1340 #. type: Plain text
1341 #: build/C/man5/elf.5:251 build/C/man5/elf.5:506
1342 msgid "Current version."
1343 msgstr ""
1344
1345 #. type: TP
1346 #: build/C/man5/elf.5:254
1347 #, no-wrap
1348 msgid "B<EI_OSABI>"
1349 msgstr ""
1350
1351 #.  .Bl -tag -width "ELFOSABI_STANDALONE" -compact
1352 #. type: Plain text
1353 #: build/C/man5/elf.5:263
1354 msgid ""
1355 "This byte identifies the operating system and ABI to which the object is "
1356 "targeted.  Some fields in other ELF structures have flags and values that "
1357 "have platform-specific meanings; the interpretation of those fields is "
1358 "determined by the value of this byte.  E.g.:"
1359 msgstr ""
1360
1361 #. type: TP
1362 #: build/C/man5/elf.5:264
1363 #, no-wrap
1364 msgid "B<ELFOSABI_NONE>"
1365 msgstr ""
1366
1367 #.  0
1368 #. type: Plain text
1369 #: build/C/man5/elf.5:269
1370 msgid "Same as ELFOSABI_SYSV"
1371 msgstr ""
1372
1373 #. type: TP
1374 #: build/C/man5/elf.5:269
1375 #, no-wrap
1376 msgid "B<ELFOSABI_SYSV>"
1377 msgstr ""
1378
1379 #.  0
1380 #.  synonym: ELFOSABI_NONE
1381 #. type: Plain text
1382 #: build/C/man5/elf.5:274
1383 msgid "UNIX System V ABI."
1384 msgstr ""
1385
1386 #. type: TP
1387 #: build/C/man5/elf.5:274
1388 #, no-wrap
1389 msgid "B<ELFOSABI_HPUX>"
1390 msgstr ""
1391
1392 #.  1
1393 #. type: Plain text
1394 #: build/C/man5/elf.5:278
1395 msgid "HP-UX ABI."
1396 msgstr ""
1397
1398 #. type: TP
1399 #: build/C/man5/elf.5:278
1400 #, no-wrap
1401 msgid "B<ELFOSABI_NETBSD>"
1402 msgstr ""
1403
1404 #.  2
1405 #. type: Plain text
1406 #: build/C/man5/elf.5:282
1407 msgid "NetBSD ABI."
1408 msgstr ""
1409
1410 #. type: TP
1411 #: build/C/man5/elf.5:282
1412 #, no-wrap
1413 msgid "B<ELFOSABI_LINUX>"
1414 msgstr ""
1415
1416 #.  3
1417 #.  .TP
1418 #.  .BR ELFOSABI_HURD
1419 #.  Hurd ABI.
1420 #.  4
1421 #.  .TP
1422 #.  .BR ELFOSABI_86OPEN
1423 #.  86Open Common IA32 ABI.
1424 #.  5
1425 #. type: Plain text
1426 #: build/C/man5/elf.5:294
1427 msgid "Linux ABI."
1428 msgstr ""
1429
1430 #. type: TP
1431 #: build/C/man5/elf.5:294
1432 #, no-wrap
1433 msgid "B<ELFOSABI_SOLARIS>"
1434 msgstr ""
1435
1436 #.  6
1437 #.  .TP
1438 #.  .BR ELFOSABI_MONTEREY
1439 #.  Monterey project ABI. Now replaced by
1440 #.  ELFOSABI_AIX
1441 #.  7
1442 #. type: Plain text
1443 #: build/C/man5/elf.5:303
1444 msgid "Solaris ABI."
1445 msgstr ""
1446
1447 #. type: TP
1448 #: build/C/man5/elf.5:303
1449 #, no-wrap
1450 msgid "B<ELFOSABI_IRIX>"
1451 msgstr ""
1452
1453 #.  8
1454 #. type: Plain text
1455 #: build/C/man5/elf.5:307
1456 msgid "IRIX ABI."
1457 msgstr ""
1458
1459 #. type: TP
1460 #: build/C/man5/elf.5:307
1461 #, no-wrap
1462 msgid "B<ELFOSABI_FREEBSD>"
1463 msgstr ""
1464
1465 #.  9
1466 #. type: Plain text
1467 #: build/C/man5/elf.5:311
1468 msgid "FreeBSD ABI."
1469 msgstr ""
1470
1471 #. type: TP
1472 #: build/C/man5/elf.5:311
1473 #, no-wrap
1474 msgid "B<ELFOSABI_TRU64>"
1475 msgstr ""
1476
1477 #.  10
1478 #.  ELFOSABI_MODESTO
1479 #.  11
1480 #.  ELFOSABI_OPENBSD
1481 #.  12
1482 #. type: Plain text
1483 #: build/C/man5/elf.5:319
1484 msgid "TRU64 UNIX ABI."
1485 msgstr ""
1486
1487 #. type: TP
1488 #: build/C/man5/elf.5:319
1489 #, no-wrap
1490 msgid "B<ELFOSABI_ARM>"
1491 msgstr ""
1492
1493 #.  97
1494 #. type: Plain text
1495 #: build/C/man5/elf.5:323
1496 msgid "ARM architecture ABI."
1497 msgstr ""
1498
1499 #. type: TP
1500 #: build/C/man5/elf.5:323
1501 #, no-wrap
1502 msgid "B<ELFOSABI_STANDALONE>"
1503 msgstr ""
1504
1505 #.  255
1506 #.  .El
1507 #. type: Plain text
1508 #: build/C/man5/elf.5:328
1509 msgid "Stand-alone (embedded) ABI."
1510 msgstr ""
1511
1512 #. type: TP
1513 #: build/C/man5/elf.5:330
1514 #, no-wrap
1515 msgid "B<EI_ABIVERSION>"
1516 msgstr ""
1517
1518 #. type: Plain text
1519 #: build/C/man5/elf.5:340
1520 msgid ""
1521 "This byte identifies the version of the ABI to which the object is "
1522 "targeted.  This field is used to distinguish among incompatible versions of "
1523 "an ABI.  The interpretation of this version number is dependent on the ABI "
1524 "identified by the B<EI_OSABI> field.  Applications conforming to this "
1525 "specification use the value 0."
1526 msgstr ""
1527
1528 #. type: TP
1529 #: build/C/man5/elf.5:340
1530 #, no-wrap
1531 msgid "B<EI_PAD>"
1532 msgstr ""
1533
1534 #.  As reported by Yuri Kozlov and confirmed by Mike Frysinger, EI_BRAND is
1535 #.  not in GABI (http://www.sco.com/developers/gabi/latest/ch4.eheader.html)
1536 #.  It looks to be a BSDism
1537 #.  .TP
1538 #.  .BR EI_BRAND
1539 #.  Start of architecture identification.
1540 #. type: Plain text
1541 #: build/C/man5/elf.5:356
1542 msgid ""
1543 "Start of padding.  These bytes are reserved and set to zero.  Programs which "
1544 "read them should ignore them.  The value for B<EI_PAD> will change in the "
1545 "future if currently unused bytes are given meanings."
1546 msgstr ""
1547
1548 #. type: TP
1549 #: build/C/man5/elf.5:356
1550 #, no-wrap
1551 msgid "B<EI_NIDENT>"
1552 msgstr ""
1553
1554 #.  .El
1555 #. type: Plain text
1556 #: build/C/man5/elf.5:362
1557 msgid "The size of the I<e_ident> array."
1558 msgstr ""
1559
1560 #. type: TP
1561 #: build/C/man5/elf.5:363
1562 #, no-wrap
1563 msgid "I<e_type>"
1564 msgstr ""
1565
1566 #. type: Plain text
1567 #: build/C/man5/elf.5:366
1568 msgid "This member of the structure identifies the object file type:"
1569 msgstr ""
1570
1571 #. type: TP
1572 #: build/C/man5/elf.5:368
1573 #, no-wrap
1574 msgid "B<ET_NONE>"
1575 msgstr ""
1576
1577 #. type: Plain text
1578 #: build/C/man5/elf.5:372
1579 msgid "An unknown type."
1580 msgstr ""
1581
1582 #. type: TP
1583 #: build/C/man5/elf.5:372
1584 #, no-wrap
1585 msgid "B<ET_REL>"
1586 msgstr ""
1587
1588 #. type: Plain text
1589 #: build/C/man5/elf.5:375
1590 msgid "A relocatable file."
1591 msgstr ""
1592
1593 #. type: TP
1594 #: build/C/man5/elf.5:375
1595 #, no-wrap
1596 msgid "B<ET_EXEC>"
1597 msgstr ""
1598
1599 #. type: Plain text
1600 #: build/C/man5/elf.5:378
1601 msgid "An executable file."
1602 msgstr ""
1603
1604 #. type: TP
1605 #: build/C/man5/elf.5:378
1606 #, no-wrap
1607 msgid "B<ET_DYN>"
1608 msgstr ""
1609
1610 #. type: Plain text
1611 #: build/C/man5/elf.5:381
1612 msgid "A shared object."
1613 msgstr ""
1614
1615 #. type: TP
1616 #: build/C/man5/elf.5:381
1617 #, no-wrap
1618 msgid "B<ET_CORE>"
1619 msgstr ""
1620
1621 #. type: Plain text
1622 #: build/C/man5/elf.5:384
1623 msgid "A core file."
1624 msgstr ""
1625
1626 #. type: TP
1627 #: build/C/man5/elf.5:387
1628 #, no-wrap
1629 msgid "I<e_machine>"
1630 msgstr ""
1631
1632 #. type: Plain text
1633 #: build/C/man5/elf.5:391
1634 msgid ""
1635 "This member specifies the required architecture for an individual file.  "
1636 "E.g.:"
1637 msgstr ""
1638
1639 #. type: TP
1640 #: build/C/man5/elf.5:393
1641 #, no-wrap
1642 msgid "B<EM_NONE>"
1643 msgstr ""
1644
1645 #.  0
1646 #. type: Plain text
1647 #: build/C/man5/elf.5:398
1648 msgid "An unknown machine."
1649 msgstr ""
1650
1651 #. type: TP
1652 #: build/C/man5/elf.5:398
1653 #, no-wrap
1654 msgid "B<EM_M32>"
1655 msgstr ""
1656
1657 #.  1
1658 #. type: Plain text
1659 #: build/C/man5/elf.5:402
1660 msgid "AT&T WE 32100."
1661 msgstr ""
1662
1663 #. type: TP
1664 #: build/C/man5/elf.5:402
1665 #, no-wrap
1666 msgid "B<EM_SPARC>"
1667 msgstr ""
1668
1669 #.  2
1670 #. type: Plain text
1671 #: build/C/man5/elf.5:406
1672 msgid "Sun Microsystems SPARC."
1673 msgstr ""
1674
1675 #. type: TP
1676 #: build/C/man5/elf.5:406
1677 #, no-wrap
1678 msgid "B<EM_386>"
1679 msgstr ""
1680
1681 #.  3
1682 #. type: Plain text
1683 #: build/C/man5/elf.5:410
1684 msgid "Intel 80386."
1685 msgstr ""
1686
1687 #. type: TP
1688 #: build/C/man5/elf.5:410
1689 #, no-wrap
1690 msgid "B<EM_68K>"
1691 msgstr ""
1692
1693 #.  4
1694 #. type: Plain text
1695 #: build/C/man5/elf.5:414
1696 msgid "Motorola 68000."
1697 msgstr ""
1698
1699 #. type: TP
1700 #: build/C/man5/elf.5:414
1701 #, no-wrap
1702 msgid "B<EM_88K>"
1703 msgstr ""
1704
1705 #.  5
1706 #.  .TP
1707 #.  .BR EM_486
1708 #.  Intel 80486.
1709 #.  6
1710 #. type: Plain text
1711 #: build/C/man5/elf.5:422
1712 msgid "Motorola 88000."
1713 msgstr ""
1714
1715 #. type: TP
1716 #: build/C/man5/elf.5:422
1717 #, no-wrap
1718 msgid "B<EM_860>"
1719 msgstr ""
1720
1721 #.  7
1722 #. type: Plain text
1723 #: build/C/man5/elf.5:426
1724 msgid "Intel 80860."
1725 msgstr ""
1726
1727 #. type: TP
1728 #: build/C/man5/elf.5:426
1729 #, no-wrap
1730 msgid "B<EM_MIPS>"
1731 msgstr ""
1732
1733 #.  8
1734 #.  EM_S370
1735 #.  9
1736 #.  .TP
1737 #.  .BR EM_MIPS_RS4_BE
1738 #.  MIPS RS4000 (big-endian only). Deprecated.
1739 #.  10
1740 #.  EM_MIPS_RS3_LE (MIPS R3000 little-endian)
1741 #.  10
1742 #. type: Plain text
1743 #: build/C/man5/elf.5:438
1744 msgid "MIPS RS3000 (big-endian only)."
1745 msgstr ""
1746
1747 #. type: TP
1748 #: build/C/man5/elf.5:438
1749 #, no-wrap
1750 msgid "B<EM_PARISC>"
1751 msgstr ""
1752
1753 #.  15
1754 #. type: Plain text
1755 #: build/C/man5/elf.5:442
1756 msgid "HP/PA."
1757 msgstr ""
1758
1759 #. type: TP
1760 #: build/C/man5/elf.5:442
1761 #, no-wrap
1762 msgid "B<EM_SPARC32PLUS>"
1763 msgstr ""
1764
1765 #.  18
1766 #. type: Plain text
1767 #: build/C/man5/elf.5:446
1768 msgid "SPARC with enhanced instruction set."
1769 msgstr ""
1770
1771 #. type: TP
1772 #: build/C/man5/elf.5:446
1773 #, no-wrap
1774 msgid "B<EM_PPC>"
1775 msgstr ""
1776
1777 #.  20
1778 #. type: Plain text
1779 #: build/C/man5/elf.5:450
1780 msgid "PowerPC."
1781 msgstr ""
1782
1783 #. type: TP
1784 #: build/C/man5/elf.5:450
1785 #, no-wrap
1786 msgid "B<EM_PPC64>"
1787 msgstr ""
1788
1789 #.  21
1790 #. type: Plain text
1791 #: build/C/man5/elf.5:454
1792 msgid "PowerPC 64-bit."
1793 msgstr ""
1794
1795 #. type: TP
1796 #: build/C/man5/elf.5:454
1797 #, no-wrap
1798 msgid "B<EM_S390>"
1799 msgstr ""
1800
1801 #.  22
1802 #. type: Plain text
1803 #: build/C/man5/elf.5:458
1804 msgid "IBM S/390"
1805 msgstr ""
1806
1807 #. type: TP
1808 #: build/C/man5/elf.5:458
1809 #, no-wrap
1810 msgid "B<EM_ARM>"
1811 msgstr ""
1812
1813 #.  40
1814 #. type: Plain text
1815 #: build/C/man5/elf.5:462
1816 msgid "Advanced RISC Machines"
1817 msgstr ""
1818
1819 #. type: TP
1820 #: build/C/man5/elf.5:462
1821 #, no-wrap
1822 msgid "B<EM_SH>"
1823 msgstr ""
1824
1825 #.  42
1826 #. type: Plain text
1827 #: build/C/man5/elf.5:466
1828 msgid "Renesas SuperH"
1829 msgstr ""
1830
1831 #. type: TP
1832 #: build/C/man5/elf.5:466
1833 #, no-wrap
1834 msgid "B<EM_SPARCV9>"
1835 msgstr ""
1836
1837 #.  43
1838 #. type: Plain text
1839 #: build/C/man5/elf.5:470
1840 msgid "SPARC v9 64-bit."
1841 msgstr ""
1842
1843 #. type: TP
1844 #: build/C/man5/elf.5:470
1845 #, no-wrap
1846 msgid "B<EM_IA_64>"
1847 msgstr ""
1848
1849 #.  50
1850 #. type: Plain text
1851 #: build/C/man5/elf.5:474
1852 msgid "Intel Itanium"
1853 msgstr ""
1854
1855 #. type: TP
1856 #: build/C/man5/elf.5:474
1857 #, no-wrap
1858 msgid "B<EM_X86_64>"
1859 msgstr ""
1860
1861 #.  62
1862 #. type: Plain text
1863 #: build/C/man5/elf.5:478
1864 msgid "AMD x86-64"
1865 msgstr ""
1866
1867 #. type: TP
1868 #: build/C/man5/elf.5:478
1869 #, no-wrap
1870 msgid "B<EM_VAX>"
1871 msgstr ""
1872
1873 #.  75
1874 #.  EM_CRIS
1875 #.  76
1876 #.  .TP
1877 #.  .BR EM_ALPHA
1878 #.  Compaq [DEC] Alpha.
1879 #.  .TP
1880 #.  .BR EM_ALPHA_EXP
1881 #.  Compaq [DEC] Alpha with enhanced instruction set.
1882 #. type: Plain text
1883 #: build/C/man5/elf.5:490
1884 msgid "DEC Vax."
1885 msgstr ""
1886
1887 #. type: TP
1888 #: build/C/man5/elf.5:493
1889 #, no-wrap
1890 msgid "I<e_version>"
1891 msgstr ""
1892
1893 #.  .Bl -tag -width "EV_CURRENT" -compact
1894 #. type: Plain text
1895 #: build/C/man5/elf.5:497
1896 msgid "This member identifies the file version:"
1897 msgstr ""
1898
1899 #. type: TP
1900 #: build/C/man5/elf.5:508
1901 #, no-wrap
1902 msgid "I<e_entry>"
1903 msgstr ""
1904
1905 #. type: Plain text
1906 #: build/C/man5/elf.5:514
1907 msgid ""
1908 "This member gives the virtual address to which the system first transfers "
1909 "control, thus starting the process.  If the file has no associated entry "
1910 "point, this member holds zero."
1911 msgstr ""
1912
1913 #. type: TP
1914 #: build/C/man5/elf.5:514
1915 #, no-wrap
1916 msgid "I<e_phoff>"
1917 msgstr ""
1918
1919 #. type: Plain text
1920 #: build/C/man5/elf.5:519
1921 msgid ""
1922 "This member holds the program header table's file offset in bytes.  If the "
1923 "file has no program header table, this member holds zero."
1924 msgstr ""
1925
1926 #. type: TP
1927 #: build/C/man5/elf.5:519
1928 #, no-wrap
1929 msgid "I<e_shoff>"
1930 msgstr ""
1931
1932 #. type: Plain text
1933 #: build/C/man5/elf.5:524
1934 msgid ""
1935 "This member holds the section header table's file offset in bytes.  If the "
1936 "file has no section header table this member holds zero."
1937 msgstr ""
1938
1939 #. type: TP
1940 #: build/C/man5/elf.5:524
1941 #, no-wrap
1942 msgid "I<e_flags>"
1943 msgstr ""
1944
1945 #. type: Plain text
1946 #: build/C/man5/elf.5:529
1947 msgid ""
1948 "This member holds processor-specific flags associated with the file.  Flag "
1949 "names take the form EF_`machine_flag'.  Currently no flags have been "
1950 "defined."
1951 msgstr ""
1952
1953 #. type: TP
1954 #: build/C/man5/elf.5:529
1955 #, no-wrap
1956 msgid "I<e_ehsize>"
1957 msgstr ""
1958
1959 #. type: Plain text
1960 #: build/C/man5/elf.5:532
1961 msgid "This member holds the ELF header's size in bytes."
1962 msgstr ""
1963
1964 #. type: TP
1965 #: build/C/man5/elf.5:532
1966 #, no-wrap
1967 msgid "I<e_phentsize>"
1968 msgstr ""
1969
1970 #. type: Plain text
1971 #: build/C/man5/elf.5:536
1972 msgid ""
1973 "This member holds the size in bytes of one entry in the file's program "
1974 "header table; all entries are the same size."
1975 msgstr ""
1976
1977 #. type: TP
1978 #: build/C/man5/elf.5:536
1979 #, no-wrap
1980 msgid "I<e_phnum>"
1981 msgstr ""
1982
1983 #. type: Plain text
1984 #: build/C/man5/elf.5:549
1985 msgid ""
1986 "This member holds the number of entries in the program header table.  Thus "
1987 "the product of I<e_phentsize> and I<e_phnum> gives the table's size in "
1988 "bytes.  If a file has no program header, I<e_phnum> holds the value zero."
1989 msgstr ""
1990
1991 #.  This is a Linux extension, added in Linux 2.6.34.
1992 #.  .Bl -tag -width "PN_XNUM"
1993 #. type: Plain text
1994 #: build/C/man5/elf.5:563
1995 msgid ""
1996 "If the number of entries in the program header table is larger than or equal "
1997 "to B<PN_XNUM> (0xffff), this member holds B<PN_XNUM> (0xffff) and the real "
1998 "number of entries in the program header table is held in the I<sh_info> "
1999 "member of the initial entry in section header table.  Otherwise, the "
2000 "I<sh_info> member of the initial entry contains the value zero."
2001 msgstr ""
2002
2003 #. type: TP
2004 #: build/C/man5/elf.5:564
2005 #, no-wrap
2006 msgid "B<PN_XNUM>"
2007 msgstr ""
2008
2009 #. type: Plain text
2010 #: build/C/man5/elf.5:569
2011 msgid ""
2012 "This is defined as 0xffff, the largest number I<e_phnum> can have, "
2013 "specifying where the actual number of program headers is assigned."
2014 msgstr ""
2015
2016 #. type: TP
2017 #: build/C/man5/elf.5:573
2018 #, no-wrap
2019 msgid "I<e_shentsize>"
2020 msgstr ""
2021
2022 #. type: Plain text
2023 #: build/C/man5/elf.5:578
2024 msgid ""
2025 "This member holds a sections header's size in bytes.  A section header is "
2026 "one entry in the section header table; all entries are the same size."
2027 msgstr ""
2028
2029 #. type: TP
2030 #: build/C/man5/elf.5:578
2031 #, no-wrap
2032 msgid "I<e_shnum>"
2033 msgstr ""
2034
2035 #. type: Plain text
2036 #: build/C/man5/elf.5:591
2037 msgid ""
2038 "This member holds the number of entries in the section header table.  Thus "
2039 "the product of I<e_shentsize> and I<e_shnum> gives the section header "
2040 "table's size in bytes.  If a file has no section header table, I<e_shnum> "
2041 "holds the value of zero."
2042 msgstr ""
2043
2044 #. type: Plain text
2045 #: build/C/man5/elf.5:603
2046 msgid ""
2047 "If the number of entries in the section header table is larger than or equal "
2048 "to B<SHN_LORESERVE> (0xff00), I<e_shnum> holds the value zero and the real "
2049 "number of entries in the section header table is held in the I<sh_size> "
2050 "member of the initial entry in section header table.  Otherwise, the "
2051 "I<sh_size> member of the initial entry in the section header table holds the "
2052 "value zero."
2053 msgstr ""
2054
2055 #. type: TP
2056 #: build/C/man5/elf.5:603
2057 #, no-wrap
2058 msgid "I<e_shstrndx>"
2059 msgstr ""
2060
2061 #. type: Plain text
2062 #: build/C/man5/elf.5:610
2063 msgid ""
2064 "This member holds the section header table index of the entry associated "
2065 "with the section name string table.  If the file has no section name string "
2066 "table, this member holds the value B<SHN_UNDEF>."
2067 msgstr ""
2068
2069 #. type: Plain text
2070 #: build/C/man5/elf.5:621
2071 msgid ""
2072 "If the index of section name string table section is larger than or equal to "
2073 "B<SHN_LORESERVE> (0xff00), this member holds B<SHN_XINDEX> (0xffff) and the "
2074 "real index of the section name string table section is held in the "
2075 "I<sh_link> member of the initial entry in section header table. Otherwise, "
2076 "the I<sh_link> member of the initial entry in section header table contains "
2077 "the value zero."
2078 msgstr ""
2079
2080 #. type: TP
2081 #: build/C/man5/elf.5:623 build/C/man5/elf.5:909
2082 #, no-wrap
2083 msgid "B<SHN_UNDEF>"
2084 msgstr ""
2085
2086 #. type: Plain text
2087 #: build/C/man5/elf.5:632
2088 msgid ""
2089 "This value marks an undefined, missing, irrelevant, or otherwise meaningless "
2090 "section reference.  For example, a symbol \"defined\" relative to section "
2091 "number B<SHN_UNDEF> is an undefined symbol."
2092 msgstr ""
2093
2094 #. type: TP
2095 #: build/C/man5/elf.5:632 build/C/man5/elf.5:913
2096 #, no-wrap
2097 msgid "B<SHN_LORESERVE>"
2098 msgstr ""
2099
2100 #. type: Plain text
2101 #: build/C/man5/elf.5:635 build/C/man5/elf.5:916
2102 msgid "This value specifies the lower bound of the range of reserved indices."
2103 msgstr ""
2104
2105 #. type: TP
2106 #: build/C/man5/elf.5:635 build/C/man5/elf.5:916
2107 #, no-wrap
2108 msgid "B<SHN_LOPROC>"
2109 msgstr ""
2110
2111 #. type: Plain text
2112 #: build/C/man5/elf.5:640 build/C/man5/elf.5:921
2113 msgid ""
2114 "Values greater than or equal to B<SHN_HIPROC> are reserved for "
2115 "processor-specific semantics."
2116 msgstr ""
2117
2118 #. type: TP
2119 #: build/C/man5/elf.5:640 build/C/man5/elf.5:921
2120 #, no-wrap
2121 msgid "B<SHN_HIPROC>"
2122 msgstr ""
2123
2124 #. type: Plain text
2125 #: build/C/man5/elf.5:645 build/C/man5/elf.5:926
2126 msgid ""
2127 "Values less than or equal to B<SHN_LOPROC> are reserved for "
2128 "processor-specific semantics."
2129 msgstr ""
2130
2131 #. type: TP
2132 #: build/C/man5/elf.5:645 build/C/man5/elf.5:926
2133 #, no-wrap
2134 msgid "B<SHN_ABS>"
2135 msgstr ""
2136
2137 #. type: Plain text
2138 #: build/C/man5/elf.5:652
2139 msgid ""
2140 "This value specifies absolute values for the corresponding reference.  For "
2141 "example, symbols defined relative to section number B<SHN_ABS> have absolute "
2142 "values and are not affected by relocation."
2143 msgstr ""
2144
2145 #. type: TP
2146 #: build/C/man5/elf.5:652 build/C/man5/elf.5:933
2147 #, no-wrap
2148 msgid "B<SHN_COMMON>"
2149 msgstr ""
2150
2151 #. type: Plain text
2152 #: build/C/man5/elf.5:656
2153 msgid ""
2154 "Symbols defined relative to this section are common symbols, such as Fortran "
2155 "COMMON or unallocated C external variables."
2156 msgstr ""
2157
2158 #. type: TP
2159 #: build/C/man5/elf.5:656 build/C/man5/elf.5:937
2160 #, no-wrap
2161 msgid "B<SHN_HIRESERVE>"
2162 msgstr ""
2163
2164 #. type: Plain text
2165 #: build/C/man5/elf.5:669
2166 msgid ""
2167 "This value specifies the upper bound of the range of reserved indices "
2168 "between B<SHN_LORESERVE> and B<SHN_HIRESERVE>, inclusive; the values do not "
2169 "reference the section header table.  That is, the section header table does "
2170 "I<not> contain entries for the reserved indices."
2171 msgstr ""
2172
2173 #. type: Plain text
2174 #: build/C/man5/elf.5:691
2175 msgid ""
2176 "An executable or shared object file's program header table is an array of "
2177 "structures, each describing a segment or other information the system needs "
2178 "to prepare the program for execution.  An object file I<segment> contains "
2179 "one or more I<sections>.  Program headers are meaningful only for executable "
2180 "and shared object files.  A file specifies its own program header size with "
2181 "the ELF header's I<e_phentsize> and I<e_phnum> members.  The ELF program "
2182 "header is described by the type I<Elf32_Phdr> or I<Elf64_Phdr> depending on "
2183 "the architecture:"
2184 msgstr ""
2185
2186 #. type: Plain text
2187 #: build/C/man5/elf.5:704
2188 #, no-wrap
2189 msgid ""
2190 "typedef struct {\n"
2191 "    uint32_t   p_type;\n"
2192 "    Elf32_Off  p_offset;\n"
2193 "    Elf32_Addr p_vaddr;\n"
2194 "    Elf32_Addr p_paddr;\n"
2195 "    uint32_t   p_filesz;\n"
2196 "    uint32_t   p_memsz;\n"
2197 "    uint32_t   p_flags;\n"
2198 "    uint32_t   p_align;\n"
2199 "} Elf32_Phdr;\n"
2200 msgstr ""
2201
2202 #. type: Plain text
2203 #: build/C/man5/elf.5:719
2204 #, no-wrap
2205 msgid ""
2206 "typedef struct {\n"
2207 "    uint32_t   p_type;\n"
2208 "    uint32_t   p_flags;\n"
2209 "    Elf64_Off  p_offset;\n"
2210 "    Elf64_Addr p_vaddr;\n"
2211 "    Elf64_Addr p_paddr;\n"
2212 "    uint64_t   p_filesz;\n"
2213 "    uint64_t   p_memsz;\n"
2214 "    uint64_t   p_align;\n"
2215 "} Elf64_Phdr;\n"
2216 msgstr ""
2217
2218 #.  .Bl -tag -width "p_offset"
2219 #. type: Plain text
2220 #: build/C/man5/elf.5:727
2221 msgid ""
2222 "The main difference between the 32-bit and the 64-bit program header lies in "
2223 "the location of the I<p_flags> member in the total struct."
2224 msgstr ""
2225
2226 #. type: TP
2227 #: build/C/man5/elf.5:727
2228 #, no-wrap
2229 msgid "I<p_type>"
2230 msgstr ""
2231
2232 #.  .Bl -tag -width "PT_DYNAMIC"
2233 #. type: Plain text
2234 #: build/C/man5/elf.5:732
2235 msgid ""
2236 "This member of the Phdr struct tells what kind of segment this array element "
2237 "describes or how to interpret the array element's information."
2238 msgstr ""
2239
2240 #. type: TP
2241 #: build/C/man5/elf.5:733
2242 #, no-wrap
2243 msgid "B<PT_NULL>"
2244 msgstr ""
2245
2246 #. type: Plain text
2247 #: build/C/man5/elf.5:737
2248 msgid ""
2249 "The array element is unused and the other members' values are undefined.  "
2250 "This lets the program header have ignored entries."
2251 msgstr ""
2252
2253 #. type: TP
2254 #: build/C/man5/elf.5:737
2255 #, no-wrap
2256 msgid "B<PT_LOAD>"
2257 msgstr ""
2258
2259 #. type: Plain text
2260 #: build/C/man5/elf.5:758
2261 msgid ""
2262 "The array element specifies a loadable segment, described by I<p_filesz> and "
2263 "I<p_memsz>.  The bytes from the file are mapped to the beginning of the "
2264 "memory segment.  If the segment's memory size I<p_memsz> is larger than the "
2265 "file size I<p_filesz>, the \"extra\" bytes are defined to hold the value 0 "
2266 "and to follow the segment's initialized area.  The file size may not be "
2267 "larger than the memory size.  Loadable segment entries in the program header "
2268 "table appear in ascending order, sorted on the I<p_vaddr> member."
2269 msgstr ""
2270
2271 #. type: TP
2272 #: build/C/man5/elf.5:758
2273 #, no-wrap
2274 msgid "B<PT_DYNAMIC>"
2275 msgstr ""
2276
2277 #. type: Plain text
2278 #: build/C/man5/elf.5:761
2279 msgid "The array element specifies dynamic linking information."
2280 msgstr ""
2281
2282 #. type: TP
2283 #: build/C/man5/elf.5:761
2284 #, no-wrap
2285 msgid "B<PT_INTERP>"
2286 msgstr ""
2287
2288 #. type: Plain text
2289 #: build/C/man5/elf.5:769
2290 msgid ""
2291 "The array element specifies the location and size of a null-terminated "
2292 "pathname to invoke as an interpreter.  This segment type is meaningful only "
2293 "for executable files (though it may occur for shared objects).  However it "
2294 "may not occur more than once in a file.  If it is present, it must precede "
2295 "any loadable segment entry."
2296 msgstr ""
2297
2298 #. type: TP
2299 #: build/C/man5/elf.5:769
2300 #, no-wrap
2301 msgid "B<PT_NOTE>"
2302 msgstr ""
2303
2304 #. type: Plain text
2305 #: build/C/man5/elf.5:772
2306 msgid "The array element specifies the location and size for auxiliary information."
2307 msgstr ""
2308
2309 #. type: TP
2310 #: build/C/man5/elf.5:772
2311 #, no-wrap
2312 msgid "B<PT_SHLIB>"
2313 msgstr ""
2314
2315 #. type: Plain text
2316 #: build/C/man5/elf.5:777
2317 msgid ""
2318 "This segment type is reserved but has unspecified semantics.  Programs that "
2319 "contain an array element of this type do not conform to the ABI."
2320 msgstr ""
2321
2322 #. type: TP
2323 #: build/C/man5/elf.5:777
2324 #, no-wrap
2325 msgid "B<PT_PHDR>"
2326 msgstr ""
2327
2328 #. type: Plain text
2329 #: build/C/man5/elf.5:786
2330 msgid ""
2331 "The array element, if present, specifies the location and size of the "
2332 "program header table itself, both in the file and in the memory image of the "
2333 "program.  This segment type may not occur more than once in a file.  "
2334 "Moreover, it may only occur if the program header table is part of the "
2335 "memory image of the program.  If it is present, it must precede any loadable "
2336 "segment entry."
2337 msgstr ""
2338
2339 #. type: TP
2340 #: build/C/man5/elf.5:786
2341 #, no-wrap
2342 msgid "B<PT_LOPROC>"
2343 msgstr ""
2344
2345 #. type: Plain text
2346 #: build/C/man5/elf.5:791
2347 msgid ""
2348 "Values greater than or equal to B<PT_HIPROC> are reserved for "
2349 "processor-specific semantics."
2350 msgstr ""
2351
2352 #. type: TP
2353 #: build/C/man5/elf.5:791
2354 #, no-wrap
2355 msgid "B<PT_HIPROC>"
2356 msgstr ""
2357
2358 #.  .El
2359 #. type: Plain text
2360 #: build/C/man5/elf.5:802
2361 msgid ""
2362 "Values less than or equal to B<PT_LOPROC> are reserved for "
2363 "processor-specific semantics.  B<PT_GNU_STACK> GNU extension which is used "
2364 "by the Linux kernel to control the state of the stack via the flags set in "
2365 "the I<p_flags> member."
2366 msgstr ""
2367
2368 #. type: TP
2369 #: build/C/man5/elf.5:803
2370 #, no-wrap
2371 msgid "I<p_offset>"
2372 msgstr ""
2373
2374 #. type: Plain text
2375 #: build/C/man5/elf.5:807
2376 msgid ""
2377 "This member holds the offset from the beginning of the file at which the "
2378 "first byte of the segment resides."
2379 msgstr ""
2380
2381 #. type: TP
2382 #: build/C/man5/elf.5:807
2383 #, no-wrap
2384 msgid "I<p_vaddr>"
2385 msgstr ""
2386
2387 #. type: Plain text
2388 #: build/C/man5/elf.5:811
2389 msgid ""
2390 "This member holds the virtual address at which the first byte of the segment "
2391 "resides in memory."
2392 msgstr ""
2393
2394 #. type: TP
2395 #: build/C/man5/elf.5:811
2396 #, no-wrap
2397 msgid "I<p_paddr>"
2398 msgstr ""
2399
2400 #. type: Plain text
2401 #: build/C/man5/elf.5:819
2402 msgid ""
2403 "On systems for which physical addressing is relevant, this member is "
2404 "reserved for the segment's physical address.  Under BSD this member is not "
2405 "used and must be zero."
2406 msgstr ""
2407
2408 #. type: TP
2409 #: build/C/man5/elf.5:819
2410 #, no-wrap
2411 msgid "I<p_filesz>"
2412 msgstr ""
2413
2414 #. type: Plain text
2415 #: build/C/man5/elf.5:823
2416 msgid ""
2417 "This member holds the number of bytes in the file image of the segment.  It "
2418 "may be zero."
2419 msgstr ""
2420
2421 #. type: TP
2422 #: build/C/man5/elf.5:823
2423 #, no-wrap
2424 msgid "I<p_memsz>"
2425 msgstr ""
2426
2427 #. type: Plain text
2428 #: build/C/man5/elf.5:827
2429 msgid ""
2430 "This member holds the number of bytes in the memory image of the segment.  "
2431 "It may be zero."
2432 msgstr ""
2433
2434 #. type: TP
2435 #: build/C/man5/elf.5:827
2436 #, no-wrap
2437 msgid "I<p_flags>"
2438 msgstr ""
2439
2440 #.  .Bl -tag -width "PF_X" -compact
2441 #. type: Plain text
2442 #: build/C/man5/elf.5:831
2443 msgid "This member holds a bitmask of flags relevant to the segment:"
2444 msgstr ""
2445
2446 #. type: TP
2447 #: build/C/man5/elf.5:832
2448 #, no-wrap
2449 msgid "B<PF_X>"
2450 msgstr ""
2451
2452 #. type: Plain text
2453 #: build/C/man5/elf.5:836
2454 msgid "An executable segment."
2455 msgstr ""
2456
2457 #. type: TP
2458 #: build/C/man5/elf.5:836
2459 #, no-wrap
2460 msgid "B<PF_W>"
2461 msgstr ""
2462
2463 #. type: Plain text
2464 #: build/C/man5/elf.5:839
2465 msgid "A writable segment."
2466 msgstr ""
2467
2468 #. type: TP
2469 #: build/C/man5/elf.5:839
2470 #, no-wrap
2471 msgid "B<PF_R>"
2472 msgstr ""
2473
2474 #. type: Plain text
2475 #: build/C/man5/elf.5:842
2476 msgid "A readable segment."
2477 msgstr ""
2478
2479 #. type: Plain text
2480 #: build/C/man5/elf.5:855
2481 msgid ""
2482 "A text segment commonly has the flags B<PF_X> and B<PF_R>.  A data segment "
2483 "commonly has B<PF_X>, B<PF_W> and B<PF_R>."
2484 msgstr ""
2485
2486 #. type: TP
2487 #: build/C/man5/elf.5:855
2488 #, no-wrap
2489 msgid "I<p_align>"
2490 msgstr ""
2491
2492 #.  .El
2493 #. type: Plain text
2494 #: build/C/man5/elf.5:874
2495 msgid ""
2496 "This member holds the value to which the segments are aligned in memory and "
2497 "in the file.  Loadable process segments must have congruent values for "
2498 "I<p_vaddr> and I<p_offset>, modulo the page size.  Values of zero and one "
2499 "mean no alignment is required.  Otherwise, I<p_align> should be a positive, "
2500 "integral power of two, and I<p_vaddr> should equal I<p_offset>, modulo "
2501 "I<p_align>."
2502 msgstr ""
2503
2504 #. type: Plain text
2505 #: build/C/man5/elf.5:891
2506 msgid ""
2507 "A file's section header table lets one locate all the file's sections.  The "
2508 "section header table is an array of I<Elf32_Shdr> or I<Elf64_Shdr> "
2509 "structures.  The ELF header's I<e_shoff> member gives the byte offset from "
2510 "the beginning of the file to the section header table.  I<e_shnum> holds the "
2511 "number of entries the section header table contains.  I<e_shentsize> holds "
2512 "the size in bytes of each entry."
2513 msgstr ""
2514
2515 #.  .Bl -tag -width "SHN_LORESERVE"
2516 #. type: Plain text
2517 #: build/C/man5/elf.5:908
2518 msgid ""
2519 "A section header table index is a subscript into this array.  Some section "
2520 "header table indices are reserved: the initial entry and the indices between "
2521 "B<SHN_LORESERVE> and B<SHN_HIRESERVE>.  The initial entry is used in ELF "
2522 "extensions for I<e_phnum>, I<e_shnum> and I<e_strndx>; in other cases, each "
2523 "field in the initial entry is set to zero.  An object file does not have "
2524 "sections for these special indices:"
2525 msgstr ""
2526
2527 #. type: Plain text
2528 #: build/C/man5/elf.5:913
2529 msgid ""
2530 "This value marks an undefined, missing, irrelevant or otherwise meaningless "
2531 "section reference."
2532 msgstr ""
2533
2534 #. type: Plain text
2535 #: build/C/man5/elf.5:933
2536 msgid ""
2537 "This value specifies the absolute value for the corresponding reference.  "
2538 "For example, a symbol defined relative to section number B<SHN_ABS> has an "
2539 "absolute value and is not affected by relocation."
2540 msgstr ""
2541
2542 #. type: Plain text
2543 #: build/C/man5/elf.5:937
2544 msgid ""
2545 "Symbols defined relative to this section are common symbols, such as FORTRAN "
2546 "COMMON or unallocated C external variables."
2547 msgstr ""
2548
2549 #. type: Plain text
2550 #: build/C/man5/elf.5:948
2551 msgid ""
2552 "This value specifies the upper bound of the range of reserved indices.  The "
2553 "system reserves indices between B<SHN_LORESERVE> and B<SHN_HIRESERVE>, "
2554 "inclusive.  The section header table does not contain entries for the "
2555 "reserved indices."
2556 msgstr ""
2557
2558 #. type: Plain text
2559 #: build/C/man5/elf.5:952
2560 msgid "The section header has the following structure:"
2561 msgstr ""
2562
2563 #. type: Plain text
2564 #: build/C/man5/elf.5:967
2565 #, no-wrap
2566 msgid ""
2567 "typedef struct {\n"
2568 "    uint32_t   sh_name;\n"
2569 "    uint32_t   sh_type;\n"
2570 "    uint32_t   sh_flags;\n"
2571 "    Elf32_Addr sh_addr;\n"
2572 "    Elf32_Off  sh_offset;\n"
2573 "    uint32_t   sh_size;\n"
2574 "    uint32_t   sh_link;\n"
2575 "    uint32_t   sh_info;\n"
2576 "    uint32_t   sh_addralign;\n"
2577 "    uint32_t   sh_entsize;\n"
2578 "} Elf32_Shdr;\n"
2579 msgstr ""
2580
2581 #. type: Plain text
2582 #: build/C/man5/elf.5:984
2583 #, no-wrap
2584 msgid ""
2585 "typedef struct {\n"
2586 "    uint32_t   sh_name;\n"
2587 "    uint32_t   sh_type;\n"
2588 "    uint64_t   sh_flags;\n"
2589 "    Elf64_Addr sh_addr;\n"
2590 "    Elf64_Off  sh_offset;\n"
2591 "    uint64_t   sh_size;\n"
2592 "    uint32_t   sh_link;\n"
2593 "    uint32_t   sh_info;\n"
2594 "    uint64_t   sh_addralign;\n"
2595 "    uint64_t   sh_entsize;\n"
2596 "} Elf64_Shdr;\n"
2597 msgstr ""
2598
2599 #.  .Bl -tag -width "sh_addralign"
2600 #. type: Plain text
2601 #: build/C/man5/elf.5:989
2602 msgid "No real differences exist between the 32-bit and 64-bit section headers."
2603 msgstr ""
2604
2605 #. type: TP
2606 #: build/C/man5/elf.5:989
2607 #, no-wrap
2608 msgid "I<sh_name>"
2609 msgstr ""
2610
2611 #. type: Plain text
2612 #: build/C/man5/elf.5:995
2613 msgid ""
2614 "This member specifies the name of the section.  Its value is an index into "
2615 "the section header string table section, giving the location of a "
2616 "null-terminated string."
2617 msgstr ""
2618
2619 #. type: TP
2620 #: build/C/man5/elf.5:995
2621 #, no-wrap
2622 msgid "I<sh_type>"
2623 msgstr ""
2624
2625 #.  .Bl -tag -width "SHT_PROGBITS"
2626 #. type: Plain text
2627 #: build/C/man5/elf.5:999
2628 msgid "This member categorizes the section's contents and semantics."
2629 msgstr ""
2630
2631 #. type: TP
2632 #: build/C/man5/elf.5:1000
2633 #, no-wrap
2634 msgid "B<SHT_NULL>"
2635 msgstr ""
2636
2637 #. type: Plain text
2638 #: build/C/man5/elf.5:1007
2639 msgid ""
2640 "This value marks the section header as inactive.  It does not have an "
2641 "associated section.  Other members of the section header have undefined "
2642 "values."
2643 msgstr ""
2644
2645 #. type: TP
2646 #: build/C/man5/elf.5:1007
2647 #, no-wrap
2648 msgid "B<SHT_PROGBITS>"
2649 msgstr ""
2650
2651 #. type: Plain text
2652 #: build/C/man5/elf.5:1011
2653 msgid ""
2654 "This section holds information defined by the program, whose format and "
2655 "meaning are determined solely by the program."
2656 msgstr ""
2657
2658 #. type: TP
2659 #: build/C/man5/elf.5:1011
2660 #, no-wrap
2661 msgid "B<SHT_SYMTAB>"
2662 msgstr ""
2663
2664 #. type: Plain text
2665 #: build/C/man5/elf.5:1024
2666 msgid ""
2667 "This section holds a symbol table.  Typically, B<SHT_SYMTAB> provides "
2668 "symbols for link editing, though it may also be used for dynamic linking.  "
2669 "As a complete symbol table, it may contain many symbols unnecessary for "
2670 "dynamic linking.  An object file can also contain a B<SHT_DYNSYM> section."
2671 msgstr ""
2672
2673 #. type: TP
2674 #: build/C/man5/elf.5:1024
2675 #, no-wrap
2676 msgid "B<SHT_STRTAB>"
2677 msgstr ""
2678
2679 #. type: Plain text
2680 #: build/C/man5/elf.5:1029
2681 msgid ""
2682 "This section holds a string table.  An object file may have multiple string "
2683 "table sections."
2684 msgstr ""
2685
2686 #. type: TP
2687 #: build/C/man5/elf.5:1029
2688 #, no-wrap
2689 msgid "B<SHT_RELA>"
2690 msgstr ""
2691
2692 #. type: Plain text
2693 #: build/C/man5/elf.5:1037
2694 msgid ""
2695 "This section holds relocation entries with explicit addends, such as type "
2696 "I<Elf32_Rela> for the 32-bit class of object files.  An object may have "
2697 "multiple relocation sections."
2698 msgstr ""
2699
2700 #. type: TP
2701 #: build/C/man5/elf.5:1037
2702 #, no-wrap
2703 msgid "B<SHT_HASH>"
2704 msgstr ""
2705
2706 #. type: Plain text
2707 #: build/C/man5/elf.5:1044
2708 msgid ""
2709 "This section holds a symbol hash table.  An object participating in dynamic "
2710 "linking must contain a symbol hash table.  An object file may have only one "
2711 "hash table."
2712 msgstr ""
2713
2714 #. type: TP
2715 #: build/C/man5/elf.5:1044
2716 #, no-wrap
2717 msgid "B<SHT_DYNAMIC>"
2718 msgstr ""
2719
2720 #. type: Plain text
2721 #: build/C/man5/elf.5:1049
2722 msgid ""
2723 "This section holds information for dynamic linking.  An object file may have "
2724 "only one dynamic section."
2725 msgstr ""
2726
2727 #. type: TP
2728 #: build/C/man5/elf.5:1049
2729 #, no-wrap
2730 msgid "B<SHT_NOTE>"
2731 msgstr ""
2732
2733 #. type: Plain text
2734 #: build/C/man5/elf.5:1052
2735 msgid "This section holds information that marks the file in some way."
2736 msgstr ""
2737
2738 #. type: TP
2739 #: build/C/man5/elf.5:1052
2740 #, no-wrap
2741 msgid "B<SHT_NOBITS>"
2742 msgstr ""
2743
2744 #. type: Plain text
2745 #: build/C/man5/elf.5:1060
2746 msgid ""
2747 "A section of this type occupies no space in the file but otherwise resembles "
2748 "B<SHT_PROGBITS>.  Although this section contains no bytes, the I<sh_offset> "
2749 "member contains the conceptual file offset."
2750 msgstr ""
2751
2752 #. type: TP
2753 #: build/C/man5/elf.5:1060
2754 #, no-wrap
2755 msgid "B<SHT_REL>"
2756 msgstr ""
2757
2758 #. type: Plain text
2759 #: build/C/man5/elf.5:1068
2760 msgid ""
2761 "This section holds relocation offsets without explicit addends, such as type "
2762 "I<Elf32_Rel> for the 32-bit class of object files.  An object file may have "
2763 "multiple relocation sections."
2764 msgstr ""
2765
2766 #. type: TP
2767 #: build/C/man5/elf.5:1068
2768 #, no-wrap
2769 msgid "B<SHT_SHLIB>"
2770 msgstr ""
2771
2772 #. type: Plain text
2773 #: build/C/man5/elf.5:1071
2774 msgid "This section is reserved but has unspecified semantics."
2775 msgstr ""
2776
2777 #. type: TP
2778 #: build/C/man5/elf.5:1071
2779 #, no-wrap
2780 msgid "B<SHT_DYNSYM>"
2781 msgstr ""
2782
2783 #. type: Plain text
2784 #: build/C/man5/elf.5:1078
2785 msgid ""
2786 "This section holds a minimal set of dynamic linking symbols.  An object file "
2787 "can also contain a B<SHT_SYMTAB> section."
2788 msgstr ""
2789
2790 #. type: TP
2791 #: build/C/man5/elf.5:1078
2792 #, no-wrap
2793 msgid "B<SHT_LOPROC>"
2794 msgstr ""
2795
2796 #. type: Plain text
2797 #: build/C/man5/elf.5:1083
2798 msgid ""
2799 "This value up to and including B<SHT_HIPROC> is reserved for "
2800 "processor-specific semantics."
2801 msgstr ""
2802
2803 #. type: TP
2804 #: build/C/man5/elf.5:1083
2805 #, no-wrap
2806 msgid "B<SHT_HIPROC>"
2807 msgstr ""
2808
2809 #. type: Plain text
2810 #: build/C/man5/elf.5:1088
2811 msgid ""
2812 "This value down to and including B<SHT_LOPROC> is reserved for "
2813 "processor-specific semantics."
2814 msgstr ""
2815
2816 #. type: TP
2817 #: build/C/man5/elf.5:1088
2818 #, no-wrap
2819 msgid "B<SHT_LOUSER>"
2820 msgstr ""
2821
2822 #. type: Plain text
2823 #: build/C/man5/elf.5:1092
2824 msgid ""
2825 "This value specifies the lower bound of the range of indices reserved for "
2826 "application programs."
2827 msgstr ""
2828
2829 #. type: TP
2830 #: build/C/man5/elf.5:1092
2831 #, no-wrap
2832 msgid "B<SHT_HIUSER>"
2833 msgstr ""
2834
2835 #.  .El
2836 #. type: Plain text
2837 #: build/C/man5/elf.5:1103
2838 msgid ""
2839 "This value specifies the upper bound of the range of indices reserved for "
2840 "application programs.  Section types between B<SHT_LOUSER> and B<SHT_HIUSER> "
2841 "may be used by the application, without conflicting with current or future "
2842 "system-defined section types."
2843 msgstr ""
2844
2845 #. type: TP
2846 #: build/C/man5/elf.5:1104
2847 #, no-wrap
2848 msgid "I<sh_flags>"
2849 msgstr ""
2850
2851 #.  .Bl -tag -width "SHF_EXECINSTR" -compact
2852 #. type: Plain text
2853 #: build/C/man5/elf.5:1117
2854 msgid ""
2855 "Sections support one-bit flags that describe miscellaneous attributes.  If a "
2856 "flag bit is set in I<sh_flags>, the attribute is \"on\" for the section.  "
2857 "Otherwise, the attribute is \"off\" or does not apply.  Undefined attributes "
2858 "are set to zero."
2859 msgstr ""
2860
2861 #. type: TP
2862 #: build/C/man5/elf.5:1118
2863 #, no-wrap
2864 msgid "B<SHF_WRITE>"
2865 msgstr ""
2866
2867 #. type: Plain text
2868 #: build/C/man5/elf.5:1122
2869 msgid "This section contains data that should be writable during process execution."
2870 msgstr ""
2871
2872 #. type: TP
2873 #: build/C/man5/elf.5:1122
2874 #, no-wrap
2875 msgid "B<SHF_ALLOC>"
2876 msgstr ""
2877
2878 #. type: Plain text
2879 #: build/C/man5/elf.5:1129
2880 msgid ""
2881 "This section occupies memory during process execution.  Some control "
2882 "sections do not reside in the memory image of an object file.  This "
2883 "attribute is off for those sections."
2884 msgstr ""
2885
2886 #. type: TP
2887 #: build/C/man5/elf.5:1129
2888 #, no-wrap
2889 msgid "B<SHF_EXECINSTR>"
2890 msgstr ""
2891
2892 #. type: Plain text
2893 #: build/C/man5/elf.5:1132
2894 msgid "This section contains executable machine instructions."
2895 msgstr ""
2896
2897 #. type: TP
2898 #: build/C/man5/elf.5:1132
2899 #, no-wrap
2900 msgid "B<SHF_MASKPROC>"
2901 msgstr ""
2902
2903 #. type: Plain text
2904 #: build/C/man5/elf.5:1136
2905 msgid ""
2906 "All bits included in this mask are reserved for processor-specific "
2907 "semantics."
2908 msgstr ""
2909
2910 #. type: TP
2911 #: build/C/man5/elf.5:1138
2912 #, no-wrap
2913 msgid "I<sh_addr>"
2914 msgstr ""
2915
2916 #. type: Plain text
2917 #: build/C/man5/elf.5:1143
2918 msgid ""
2919 "If this section appears in the memory image of a process, this member holds "
2920 "the address at which the section's first byte should reside.  Otherwise, the "
2921 "member contains zero."
2922 msgstr ""
2923
2924 #. type: TP
2925 #: build/C/man5/elf.5:1143
2926 #, no-wrap
2927 msgid "I<sh_offset>"
2928 msgstr ""
2929
2930 #. type: Plain text
2931 #: build/C/man5/elf.5:1152
2932 msgid ""
2933 "This member's value holds the byte offset from the beginning of the file to "
2934 "the first byte in the section.  One section type, B<SHT_NOBITS>, occupies no "
2935 "space in the file, and its I<sh_offset> member locates the conceptual "
2936 "placement in the file."
2937 msgstr ""
2938
2939 #. type: TP
2940 #: build/C/man5/elf.5:1152
2941 #, no-wrap
2942 msgid "I<sh_size>"
2943 msgstr ""
2944
2945 #. type: Plain text
2946 #: build/C/man5/elf.5:1164
2947 msgid ""
2948 "This member holds the section's size in bytes.  Unless the section type is "
2949 "B<SHT_NOBITS>, the section occupies I<sh_size> bytes in the file.  A section "
2950 "of type B<SHT_NOBITS> may have a nonzero size, but it occupies no space in "
2951 "the file."
2952 msgstr ""
2953
2954 #. type: TP
2955 #: build/C/man5/elf.5:1164
2956 #, no-wrap
2957 msgid "I<sh_link>"
2958 msgstr ""
2959
2960 #. type: Plain text
2961 #: build/C/man5/elf.5:1168
2962 msgid ""
2963 "This member holds a section header table index link, whose interpretation "
2964 "depends on the section type."
2965 msgstr ""
2966
2967 #. type: TP
2968 #: build/C/man5/elf.5:1168
2969 #, no-wrap
2970 msgid "I<sh_info>"
2971 msgstr ""
2972
2973 #. type: Plain text
2974 #: build/C/man5/elf.5:1172
2975 msgid ""
2976 "This member holds extra information, whose interpretation depends on the "
2977 "section type."
2978 msgstr ""
2979
2980 #. type: TP
2981 #: build/C/man5/elf.5:1172
2982 #, no-wrap
2983 msgid "I<sh_addralign>"
2984 msgstr ""
2985
2986 #. type: Plain text
2987 #: build/C/man5/elf.5:1185
2988 msgid ""
2989 "Some sections have address alignment constraints.  If a section holds a "
2990 "doubleword, the system must ensure doubleword alignment for the entire "
2991 "section.  That is, the value of I<sh_addr> must be congruent to zero, modulo "
2992 "the value of I<sh_addralign>.  Only zero and positive integral powers of two "
2993 "are allowed.  Values of zero or one mean the section has no alignment "
2994 "constraints."
2995 msgstr ""
2996
2997 #. type: TP
2998 #: build/C/man5/elf.5:1185
2999 #, no-wrap
3000 msgid "I<sh_entsize>"
3001 msgstr ""
3002
3003 #.  .El
3004 #. type: Plain text
3005 #: build/C/man5/elf.5:1192
3006 msgid ""
3007 "Some sections hold a table of fixed-sized entries, such as a symbol table.  "
3008 "For such a section, this member gives the size in bytes for each entry.  "
3009 "This member contains zero if the section does not hold a table of fixed-size "
3010 "entries."
3011 msgstr ""
3012
3013 #.  .Bl -tag -width ".shstrtab"
3014 #. type: Plain text
3015 #: build/C/man5/elf.5:1195
3016 msgid "Various sections hold program and control information:"
3017 msgstr ""
3018
3019 #. type: TP
3020 #: build/C/man5/elf.5:1195
3021 #, no-wrap
3022 msgid "I<.bss>"
3023 msgstr ""
3024
3025 #. type: Plain text
3026 #: build/C/man5/elf.5:1207
3027 msgid ""
3028 "This section holds uninitialized data that contributes to the program's "
3029 "memory image.  By definition, the system initializes the data with zeros "
3030 "when the program begins to run.  This section is of type B<SHT_NOBITS>.  The "
3031 "attribute types are B<SHF_ALLOC> and B<SHF_WRITE>."
3032 msgstr ""
3033
3034 #. type: TP
3035 #: build/C/man5/elf.5:1207
3036 #, no-wrap
3037 msgid "I<.comment>"
3038 msgstr ""
3039
3040 #. type: Plain text
3041 #: build/C/man5/elf.5:1213
3042 msgid ""
3043 "This section holds version control information.  This section is of type "
3044 "B<SHT_PROGBITS>.  No attribute types are used."
3045 msgstr ""
3046
3047 #. type: TP
3048 #: build/C/man5/elf.5:1213
3049 #, no-wrap
3050 msgid "I<.ctors>"
3051 msgstr ""
3052
3053 #. type: Plain text
3054 #: build/C/man5/elf.5:1222
3055 msgid ""
3056 "This section holds initialized pointers to the C++ constructor functions.  "
3057 "This section is of type B<SHT_PROGBITS>.  The attribute types are "
3058 "B<SHF_ALLOC> and B<SHF_WRITE>."
3059 msgstr ""
3060
3061 #. type: TP
3062 #: build/C/man5/elf.5:1222
3063 #, no-wrap
3064 msgid "I<.data>"
3065 msgstr ""
3066
3067 #. type: Plain text
3068 #: build/C/man5/elf.5:1232 build/C/man5/elf.5:1242
3069 msgid ""
3070 "This section holds initialized data that contribute to the program's memory "
3071 "image.  This section is of type B<SHT_PROGBITS>.  The attribute types are "
3072 "B<SHF_ALLOC> and B<SHF_WRITE>."
3073 msgstr ""
3074
3075 #. type: TP
3076 #: build/C/man5/elf.5:1232
3077 #, no-wrap
3078 msgid "I<.data1>"
3079 msgstr ""
3080
3081 #. type: TP
3082 #: build/C/man5/elf.5:1242
3083 #, no-wrap
3084 msgid "I<.debug>"
3085 msgstr ""
3086
3087 #. type: Plain text
3088 #: build/C/man5/elf.5:1250
3089 msgid ""
3090 "This section holds information for symbolic debugging.  The contents are "
3091 "unspecified.  This section is of type B<SHT_PROGBITS>.  No attribute types "
3092 "are used."
3093 msgstr ""
3094
3095 #. type: TP
3096 #: build/C/man5/elf.5:1250
3097 #, no-wrap
3098 msgid "I<.dtors>"
3099 msgstr ""
3100
3101 #. type: Plain text
3102 #: build/C/man5/elf.5:1259
3103 msgid ""
3104 "This section holds initialized pointers to the C++ destructor functions.  "
3105 "This section is of type B<SHT_PROGBITS>.  The attribute types are "
3106 "B<SHF_ALLOC> and B<SHF_WRITE>."
3107 msgstr ""
3108
3109 #. type: TP
3110 #: build/C/man5/elf.5:1259
3111 #, no-wrap
3112 msgid "I<.dynamic>"
3113 msgstr ""
3114
3115 #. type: Plain text
3116 #: build/C/man5/elf.5:1272
3117 msgid ""
3118 "This section holds dynamic linking information.  The section's attributes "
3119 "will include the B<SHF_ALLOC> bit.  Whether the B<SHF_WRITE> bit is set is "
3120 "processor-specific.  This section is of type B<SHT_DYNAMIC>.  See the "
3121 "attributes above."
3122 msgstr ""
3123
3124 #. type: TP
3125 #: build/C/man5/elf.5:1272
3126 #, no-wrap
3127 msgid "I<.dynstr>"
3128 msgstr ""
3129
3130 #. type: Plain text
3131 #: build/C/man5/elf.5:1280
3132 msgid ""
3133 "This section holds strings needed for dynamic linking, most commonly the "
3134 "strings that represent the names associated with symbol table entries.  This "
3135 "section is of type B<SHT_STRTAB>.  The attribute type used is B<SHF_ALLOC>."
3136 msgstr ""
3137
3138 #. type: TP
3139 #: build/C/man5/elf.5:1280
3140 #, no-wrap
3141 msgid "I<.dynsym>"
3142 msgstr ""
3143
3144 #. type: Plain text
3145 #: build/C/man5/elf.5:1287
3146 msgid ""
3147 "This section holds the dynamic linking symbol table.  This section is of "
3148 "type B<SHT_DYNSYM>.  The attribute used is B<SHF_ALLOC>."
3149 msgstr ""
3150
3151 #. type: TP
3152 #: build/C/man5/elf.5:1287
3153 #, no-wrap
3154 msgid "I<.fini>"
3155 msgstr ""
3156
3157 #. type: Plain text
3158 #: build/C/man5/elf.5:1299
3159 msgid ""
3160 "This section holds executable instructions that contribute to the process "
3161 "termination code.  When a program exits normally the system arranges to "
3162 "execute the code in this section.  This section is of type B<SHT_PROGBITS>.  "
3163 "The attributes used are B<SHF_ALLOC> and B<SHF_EXECINSTR>."
3164 msgstr ""
3165
3166 #. type: TP
3167 #: build/C/man5/elf.5:1299
3168 #, no-wrap
3169 msgid "I<.gnu.version>"
3170 msgstr ""
3171
3172 #. type: Plain text
3173 #: build/C/man5/elf.5:1308
3174 msgid ""
3175 "This section holds the version symbol table, an array of I<ElfN_Half> "
3176 "elements.  This section is of type B<SHT_GNU_versym>.  The attribute type "
3177 "used is B<SHF_ALLOC>."
3178 msgstr ""
3179
3180 #. type: TP
3181 #: build/C/man5/elf.5:1308
3182 #, no-wrap
3183 msgid "I<.gnu.version_d>"
3184 msgstr ""
3185
3186 #. type: Plain text
3187 #: build/C/man5/elf.5:1317
3188 msgid ""
3189 "This section holds the version symbol definitions, a table of I<ElfN_Verdef> "
3190 "structures.  This section is of type B<SHT_GNU_verdef>.  The attribute type "
3191 "used is B<SHF_ALLOC>."
3192 msgstr ""
3193
3194 #. type: TP
3195 #: build/C/man5/elf.5:1317
3196 #, no-wrap
3197 msgid "I<.gnu.version_r>"
3198 msgstr ""
3199
3200 #. type: Plain text
3201 #: build/C/man5/elf.5:1327
3202 msgid ""
3203 "This section holds the version symbol needed elements, a table of "
3204 "I<ElfN_Verneed> structures.  This section is of type B<SHT_GNU_versym>.  The "
3205 "attribute type used is B<SHF_ALLOC>."
3206 msgstr ""
3207
3208 #. type: TP
3209 #: build/C/man5/elf.5:1327
3210 #, no-wrap
3211 msgid "I<.got>"
3212 msgstr ""
3213
3214 #. type: Plain text
3215 #: build/C/man5/elf.5:1333
3216 msgid ""
3217 "This section holds the global offset table.  This section is of type "
3218 "B<SHT_PROGBITS>.  The attributes are processor specific."
3219 msgstr ""
3220
3221 #. type: TP
3222 #: build/C/man5/elf.5:1333
3223 #, no-wrap
3224 msgid "I<.hash>"
3225 msgstr ""
3226
3227 #. type: Plain text
3228 #: build/C/man5/elf.5:1340
3229 msgid ""
3230 "This section holds a symbol hash table.  This section is of type "
3231 "B<SHT_HASH>.  The attribute used is B<SHF_ALLOC>."
3232 msgstr ""
3233
3234 #. type: TP
3235 #: build/C/man5/elf.5:1340
3236 #, no-wrap
3237 msgid "I<.init>"
3238 msgstr ""
3239
3240 #. type: Plain text
3241 #: build/C/man5/elf.5:1352
3242 msgid ""
3243 "This section holds executable instructions that contribute to the process "
3244 "initialization code.  When a program starts to run the system arranges to "
3245 "execute the code in this section before calling the main program entry "
3246 "point.  This section is of type B<SHT_PROGBITS>.  The attributes used are "
3247 "B<SHF_ALLOC> and B<SHF_EXECINSTR>."
3248 msgstr ""
3249
3250 #. type: TP
3251 #: build/C/man5/elf.5:1352
3252 #, no-wrap
3253 msgid "I<.interp>"
3254 msgstr ""
3255
3256 #. type: Plain text
3257 #: build/C/man5/elf.5:1363
3258 msgid ""
3259 "This section holds the pathname of a program interpreter.  If the file has a "
3260 "loadable segment that includes the section, the section's attributes will "
3261 "include the B<SHF_ALLOC> bit.  Otherwise, that bit will be off.  This "
3262 "section is of type B<SHT_PROGBITS>."
3263 msgstr ""
3264
3265 #. type: TP
3266 #: build/C/man5/elf.5:1363
3267 #, no-wrap
3268 msgid "I<.line>"
3269 msgstr ""
3270
3271 #. type: Plain text
3272 #: build/C/man5/elf.5:1371
3273 msgid ""
3274 "This section holds line number information for symbolic debugging, which "
3275 "describes the correspondence between the program source and the machine "
3276 "code.  The contents are unspecified.  This section is of type "
3277 "B<SHT_PROGBITS>.  No attribute types are used."
3278 msgstr ""
3279
3280 #. type: TP
3281 #: build/C/man5/elf.5:1371
3282 #, no-wrap
3283 msgid "I<.note>"
3284 msgstr ""
3285
3286 #. type: Plain text
3287 #: build/C/man5/elf.5:1384
3288 msgid ""
3289 "This section holds information in the \"Note Section\" format.  This section "
3290 "is of type B<SHT_NOTE>.  No attribute types are used.  OpenBSD native "
3291 "executables usually contain a I<.note.openbsd.ident> section to identify "
3292 "themselves, for the kernel to bypass any compatibility ELF binary emulation "
3293 "tests when loading the file."
3294 msgstr ""
3295
3296 #. type: TP
3297 #: build/C/man5/elf.5:1384
3298 #, no-wrap
3299 msgid "I<.note.GNU-stack>"
3300 msgstr ""
3301
3302 #. type: Plain text
3303 #: build/C/man5/elf.5:1393
3304 msgid ""
3305 "This section is used in Linux object files for declaring stack attributes.  "
3306 "This section is of type B<SHT_PROGBITS>.  The only attribute used is "
3307 "B<SHF_EXECINSTR>.  This indicates to the GNU linker that the object file "
3308 "requires an executable stack."
3309 msgstr ""
3310
3311 #. type: TP
3312 #: build/C/man5/elf.5:1393
3313 #, no-wrap
3314 msgid "I<.plt>"
3315 msgstr ""
3316
3317 #. type: Plain text
3318 #: build/C/man5/elf.5:1399
3319 msgid ""
3320 "This section holds the procedure linkage table.  This section is of type "
3321 "B<SHT_PROGBITS>.  The attributes are processor specific."
3322 msgstr ""
3323
3324 #. type: TP
3325 #: build/C/man5/elf.5:1399
3326 #, no-wrap
3327 msgid "I<.relNAME>"
3328 msgstr ""
3329
3330 #. type: Plain text
3331 #: build/C/man5/elf.5:1418
3332 msgid ""
3333 "This section holds relocation information as described below.  If the file "
3334 "has a loadable segment that includes relocation, the section's attributes "
3335 "will include the B<SHF_ALLOC> bit.  Otherwise the bit will be off.  By "
3336 "convention, \"NAME\" is supplied by the section to which the relocations "
3337 "apply.  Thus a relocation section for B<.text> normally would have the name "
3338 "B<.rel.text>.  This section is of type B<SHT_REL>."
3339 msgstr ""
3340
3341 #. type: TP
3342 #: build/C/man5/elf.5:1418
3343 #, no-wrap
3344 msgid "I<.relaNAME>"
3345 msgstr ""
3346
3347 #. type: Plain text
3348 #: build/C/man5/elf.5:1437
3349 msgid ""
3350 "This section holds relocation information as described below.  If the file "
3351 "has a loadable segment that includes relocation, the section's attributes "
3352 "will include the B<SHF_ALLOC> bit.  Otherwise the bit will be off.  By "
3353 "convention, \"NAME\" is supplied by the section to which the relocations "
3354 "apply.  Thus a relocation section for B<.text> normally would have the name "
3355 "B<.rela.text>.  This section is of type B<SHT_RELA>."
3356 msgstr ""
3357
3358 #. type: TP
3359 #: build/C/man5/elf.5:1437
3360 #, no-wrap
3361 msgid "I<.rodata>"
3362 msgstr ""
3363
3364 #. type: Plain text
3365 #: build/C/man5/elf.5:1445 build/C/man5/elf.5:1453
3366 msgid ""
3367 "This section holds read-only data that typically contributes to a "
3368 "nonwritable segment in the process image.  This section is of type "
3369 "B<SHT_PROGBITS>.  The attribute used is B<SHF_ALLOC>."
3370 msgstr ""
3371
3372 #. type: TP
3373 #: build/C/man5/elf.5:1445
3374 #, no-wrap
3375 msgid "I<.rodata1>"
3376 msgstr ""
3377
3378 #. type: TP
3379 #: build/C/man5/elf.5:1453
3380 #, no-wrap
3381 msgid "I<.shstrtab>"
3382 msgstr ""
3383
3384 #. type: Plain text
3385 #: build/C/man5/elf.5:1459
3386 msgid ""
3387 "This section holds section names.  This section is of type B<SHT_STRTAB>.  "
3388 "No attribute types are used."
3389 msgstr ""
3390
3391 #. type: TP
3392 #: build/C/man5/elf.5:1459
3393 #, no-wrap
3394 msgid "I<.strtab>"
3395 msgstr ""
3396
3397 #. type: Plain text
3398 #: build/C/man5/elf.5:1471
3399 msgid ""
3400 "This section holds strings, most commonly the strings that represent the "
3401 "names associated with symbol table entries.  If the file has a loadable "
3402 "segment that includes the symbol string table, the section's attributes will "
3403 "include the B<SHF_ALLOC> bit.  Otherwise the bit will be off.  This section "
3404 "is of type B<SHT_STRTAB>."
3405 msgstr ""
3406
3407 #. type: TP
3408 #: build/C/man5/elf.5:1471
3409 #, no-wrap
3410 msgid "I<.symtab>"
3411 msgstr ""
3412
3413 #. type: Plain text
3414 #: build/C/man5/elf.5:1482
3415 msgid ""
3416 "This section holds a symbol table.  If the file has a loadable segment that "
3417 "includes the symbol table, the section's attributes will include the "
3418 "B<SHF_ALLOC> bit.  Otherwise the bit will be off.  This section is of type "
3419 "B<SHT_SYMTAB>."
3420 msgstr ""
3421
3422 #. type: TP
3423 #: build/C/man5/elf.5:1482
3424 #, no-wrap
3425 msgid "I<.text>"
3426 msgstr ""
3427
3428 #.  .El
3429 #. type: Plain text
3430 #: build/C/man5/elf.5:1494
3431 msgid ""
3432 "This section holds the \"text\", or executable instructions, of a program.  "
3433 "This section is of type B<SHT_PROGBITS>.  The attributes used are "
3434 "B<SHF_ALLOC> and B<SHF_EXECINSTR>."
3435 msgstr ""
3436
3437 #. type: Plain text
3438 #: build/C/man5/elf.5:1505
3439 msgid ""
3440 "String table sections hold null-terminated character sequences, commonly "
3441 "called strings.  The object file uses these strings to represent symbol and "
3442 "section names.  One references a string as an index into the string table "
3443 "section.  The first byte, which is index zero, is defined to hold a null "
3444 "byte (\\(aq\\e0\\(aq).  Similarly, a string table's last byte is defined to "
3445 "hold a null byte, ensuring null termination for all strings."
3446 msgstr ""
3447
3448 #. type: Plain text
3449 #: build/C/man5/elf.5:1510
3450 msgid ""
3451 "An object file's symbol table holds information needed to locate and "
3452 "relocate a program's symbolic definitions and references.  A symbol table "
3453 "index is a subscript into this array."
3454 msgstr ""
3455
3456 #. type: Plain text
3457 #: build/C/man5/elf.5:1521
3458 #, no-wrap
3459 msgid ""
3460 "typedef struct {\n"
3461 "    uint32_t      st_name;\n"
3462 "    Elf32_Addr    st_value;\n"
3463 "    uint32_t      st_size;\n"
3464 "    unsigned char st_info;\n"
3465 "    unsigned char st_other;\n"
3466 "    uint16_t      st_shndx;\n"
3467 "} Elf32_Sym;\n"
3468 msgstr ""
3469
3470 #. type: Plain text
3471 #: build/C/man5/elf.5:1534
3472 #, no-wrap
3473 msgid ""
3474 "typedef struct {\n"
3475 "    uint32_t      st_name;\n"
3476 "    unsigned char st_info;\n"
3477 "    unsigned char st_other;\n"
3478 "    uint16_t      st_shndx;\n"
3479 "    Elf64_Addr    st_value;\n"
3480 "    uint64_t      st_size;\n"
3481 "} Elf64_Sym;\n"
3482 msgstr ""
3483
3484 #.  .Bl -tag -width "st_value"
3485 #. type: Plain text
3486 #: build/C/man5/elf.5:1540
3487 msgid ""
3488 "The 32-bit and 64-bit versions have the same members, just in a different "
3489 "order."
3490 msgstr ""
3491
3492 #. type: TP
3493 #: build/C/man5/elf.5:1540
3494 #, no-wrap
3495 msgid "I<st_name>"
3496 msgstr ""
3497
3498 #. type: Plain text
3499 #: build/C/man5/elf.5:1548
3500 msgid ""
3501 "This member holds an index into the object file's symbol string table, which "
3502 "holds character representations of the symbol names.  If the value is "
3503 "nonzero, it represents a string table index that gives the symbol name.  "
3504 "Otherwise, the symbol table has no name."
3505 msgstr ""
3506
3507 #. type: TP
3508 #: build/C/man5/elf.5:1548
3509 #, no-wrap
3510 msgid "I<st_value>"
3511 msgstr ""
3512
3513 #. type: Plain text
3514 #: build/C/man5/elf.5:1551
3515 msgid "This member gives the value of the associated symbol."
3516 msgstr ""
3517
3518 #. type: TP
3519 #: build/C/man5/elf.5:1551
3520 #, no-wrap
3521 msgid "I<st_size>"
3522 msgstr ""
3523
3524 #. type: Plain text
3525 #: build/C/man5/elf.5:1556
3526 msgid ""
3527 "Many symbols have associated sizes.  This member holds zero if the symbol "
3528 "has no size or an unknown size."
3529 msgstr ""
3530
3531 #. type: TP
3532 #: build/C/man5/elf.5:1556
3533 #, no-wrap
3534 msgid "I<st_info>"
3535 msgstr ""
3536
3537 #.  .Bl -tag -width "STT_SECTION"
3538 #. type: Plain text
3539 #: build/C/man5/elf.5:1560
3540 msgid "This member specifies the symbol's type and binding attributes:"
3541 msgstr ""
3542
3543 #. type: TP
3544 #: build/C/man5/elf.5:1561
3545 #, no-wrap
3546 msgid "B<STT_NOTYPE>"
3547 msgstr ""
3548
3549 #. type: Plain text
3550 #: build/C/man5/elf.5:1564
3551 msgid "The symbol's type is not defined."
3552 msgstr ""
3553
3554 #. type: TP
3555 #: build/C/man5/elf.5:1564
3556 #, no-wrap
3557 msgid "B<STT_OBJECT>"
3558 msgstr ""
3559
3560 #. type: Plain text
3561 #: build/C/man5/elf.5:1567
3562 msgid "The symbol is associated with a data object."
3563 msgstr ""
3564
3565 #. type: TP
3566 #: build/C/man5/elf.5:1567
3567 #, no-wrap
3568 msgid "B<STT_FUNC>"
3569 msgstr ""
3570
3571 #. type: Plain text
3572 #: build/C/man5/elf.5:1570
3573 msgid "The symbol is associated with a function or other executable code."
3574 msgstr ""
3575
3576 #. type: TP
3577 #: build/C/man5/elf.5:1570
3578 #, no-wrap
3579 msgid "B<STT_SECTION>"
3580 msgstr ""
3581
3582 #. type: Plain text
3583 #: build/C/man5/elf.5:1577
3584 msgid ""
3585 "The symbol is associated with a section.  Symbol table entries of this type "
3586 "exist primarily for relocation and normally have B<STB_LOCAL> bindings."
3587 msgstr ""
3588
3589 #. type: TP
3590 #: build/C/man5/elf.5:1577
3591 #, no-wrap
3592 msgid "B<STT_FILE>"
3593 msgstr ""
3594
3595 #. type: Plain text
3596 #: build/C/man5/elf.5:1588
3597 msgid ""
3598 "By convention, the symbol's name gives the name of the source file "
3599 "associated with the object file.  A file symbol has B<STB_LOCAL> bindings, "
3600 "its section index is B<SHN_ABS>, and it precedes the other B<STB_LOCAL> "
3601 "symbols of the file, if it is present."
3602 msgstr ""
3603
3604 #. type: TP
3605 #: build/C/man5/elf.5:1588
3606 #, no-wrap
3607 msgid "B<STT_LOPROC>"
3608 msgstr ""
3609
3610 #. type: Plain text
3611 #: build/C/man5/elf.5:1593
3612 msgid ""
3613 "This value up to and including B<STT_HIPROC> is reserved for "
3614 "processor-specific semantics."
3615 msgstr ""
3616
3617 #. type: TP
3618 #: build/C/man5/elf.5:1593
3619 #, no-wrap
3620 msgid "B<STT_HIPROC>"
3621 msgstr ""
3622
3623 #.  .El
3624 #.  .Bl -tag -width "STB_GLOBAL"
3625 #. type: Plain text
3626 #: build/C/man5/elf.5:1600
3627 msgid ""
3628 "This value down to and including B<STT_LOPROC> is reserved for "
3629 "processor-specific semantics."
3630 msgstr ""
3631
3632 #. type: TP
3633 #: build/C/man5/elf.5:1600
3634 #, no-wrap
3635 msgid "B<STB_LOCAL>"
3636 msgstr ""
3637
3638 #. type: Plain text
3639 #: build/C/man5/elf.5:1606
3640 msgid ""
3641 "Local symbols are not visible outside the object file containing their "
3642 "definition.  Local symbols of the same name may exist in multiple files "
3643 "without interfering with each other."
3644 msgstr ""
3645
3646 #. type: TP
3647 #: build/C/man5/elf.5:1606
3648 #, no-wrap
3649 msgid "B<STB_GLOBAL>"
3650 msgstr ""
3651
3652 #. type: Plain text
3653 #: build/C/man5/elf.5:1612
3654 msgid ""
3655 "Global symbols are visible to all object files being combined.  One file's "
3656 "definition of a global symbol will satisfy another file's undefined "
3657 "reference to the same symbol."
3658 msgstr ""
3659
3660 #. type: TP
3661 #: build/C/man5/elf.5:1612
3662 #, no-wrap
3663 msgid "B<STB_WEAK>"
3664 msgstr ""
3665
3666 #. type: Plain text
3667 #: build/C/man5/elf.5:1616
3668 msgid ""
3669 "Weak symbols resemble global symbols, but their definitions have lower "
3670 "precedence."
3671 msgstr ""
3672
3673 #. type: TP
3674 #: build/C/man5/elf.5:1616
3675 #, no-wrap
3676 msgid "B<STB_LOPROC>"
3677 msgstr ""
3678
3679 #. type: Plain text
3680 #: build/C/man5/elf.5:1621
3681 msgid ""
3682 "This value up to and including B<STB_HIPROC> is reserved for "
3683 "processor-specific semantics."
3684 msgstr ""
3685
3686 #. type: TP
3687 #: build/C/man5/elf.5:1621
3688 #, no-wrap
3689 msgid "B<STB_HIPROC>"
3690 msgstr ""
3691
3692 #. type: Plain text
3693 #: build/C/man5/elf.5:1626
3694 msgid ""
3695 "This value down to and including B<STB_LOPROC> is reserved for "
3696 "processor-specific semantics."
3697 msgstr ""
3698
3699 #. type: Plain text
3700 #: build/C/man5/elf.5:1628
3701 msgid "There are macros for packing and unpacking the binding and type fields:"
3702 msgstr ""
3703
3704 #. type: Plain text
3705 #: build/C/man5/elf.5:1635
3706 msgid ""
3707 "B<ELF32_ST_BIND>(info)  or B<ELF64_ST_BIND>(info)  extract a binding from an "
3708 "I<st_info> value."
3709 msgstr ""
3710
3711 #. type: Plain text
3712 #: build/C/man5/elf.5:1639
3713 msgid "B<ELF32_ST_TYPE>(info)  or B<ELF64_ST_TYPE>(info)"
3714 msgstr ""
3715
3716 #. type: Plain text
3717 #: build/C/man5/elf.5:1643
3718 msgid "extract a type from an I<st_info> value."
3719 msgstr ""
3720
3721 #. type: Plain text
3722 #: build/C/man5/elf.5:1647
3723 msgid "B<ELF32_ST_INFO>(bind, type)  or B<ELF64_ST_INFO>(bind, type)"
3724 msgstr ""
3725
3726 #. type: Plain text
3727 #: build/C/man5/elf.5:1651
3728 msgid "convert a binding and a type into an I<st_info> value."
3729 msgstr ""
3730
3731 #. type: TP
3732 #: build/C/man5/elf.5:1653
3733 #, no-wrap
3734 msgid "I<st_other>"
3735 msgstr ""
3736
3737 #.  .Bl -tag -width "STV_PROTECTED"
3738 #. type: Plain text
3739 #: build/C/man5/elf.5:1657
3740 msgid "This member defines the symbol visibility."
3741 msgstr ""
3742
3743 #. type: TP
3744 #: build/C/man5/elf.5:1658
3745 #, no-wrap
3746 msgid "B<STV_DEFAULT>"
3747 msgstr ""
3748
3749 #. type: Plain text
3750 #: build/C/man5/elf.5:1662
3751 msgid "Default symbol visibility rules."
3752 msgstr ""
3753
3754 #. type: TP
3755 #: build/C/man5/elf.5:1662
3756 #, no-wrap
3757 msgid "B<STV_INTERNAL>"
3758 msgstr ""
3759
3760 #. type: Plain text
3761 #: build/C/man5/elf.5:1665
3762 msgid "Processor-specific hidden class."
3763 msgstr ""
3764
3765 #. type: TP
3766 #: build/C/man5/elf.5:1665
3767 #, no-wrap
3768 msgid "B<STV_HIDDEN>"
3769 msgstr ""
3770
3771 #. type: Plain text
3772 #: build/C/man5/elf.5:1668
3773 msgid "Symbol is unavailable in other modules."
3774 msgstr ""
3775
3776 #. type: TP
3777 #: build/C/man5/elf.5:1668
3778 #, no-wrap
3779 msgid "B<STV_PROTECTED>"
3780 msgstr ""
3781
3782 #. type: Plain text
3783 #: build/C/man5/elf.5:1671
3784 msgid "Not preemptible, not exported."
3785 msgstr ""
3786
3787 #. type: Plain text
3788 #: build/C/man5/elf.5:1674
3789 msgid "There are macros for extracting the visibility type:"
3790 msgstr ""
3791
3792 #. type: Plain text
3793 #: build/C/man5/elf.5:1678
3794 msgid "B<ELF32_ST_VISIBILITY>(other)  or B<ELF64_ST_VISIBILITY>(other)"
3795 msgstr ""
3796
3797 #. type: TP
3798 #: build/C/man5/elf.5:1680
3799 #, no-wrap
3800 msgid "I<st_shndx>"
3801 msgstr ""
3802
3803 #.  .El
3804 #. type: Plain text
3805 #: build/C/man5/elf.5:1688
3806 msgid ""
3807 "Every symbol table entry is \"defined\" in relation to some section.  This "
3808 "member holds the relevant section header table index."
3809 msgstr ""
3810
3811 #. type: Plain text
3812 #: build/C/man5/elf.5:1696
3813 msgid ""
3814 "Relocation is the process of connecting symbolic references with symbolic "
3815 "definitions.  Relocatable files must have information that describes how to "
3816 "modify their section contents, thus allowing executable and shared object "
3817 "files to hold the right information for a process's program image.  "
3818 "Relocation entries are these data."
3819 msgstr ""
3820
3821 #. type: Plain text
3822 #: build/C/man5/elf.5:1698
3823 msgid "Relocation structures that do not need an addend:"
3824 msgstr ""
3825
3826 #. type: Plain text
3827 #: build/C/man5/elf.5:1705
3828 #, no-wrap
3829 msgid ""
3830 "typedef struct {\n"
3831 "    Elf32_Addr r_offset;\n"
3832 "    uint32_t   r_info;\n"
3833 "} Elf32_Rel;\n"
3834 msgstr ""
3835
3836 #. type: Plain text
3837 #: build/C/man5/elf.5:1714
3838 #, no-wrap
3839 msgid ""
3840 "typedef struct {\n"
3841 "    Elf64_Addr r_offset;\n"
3842 "    uint64_t   r_info;\n"
3843 "} Elf64_Rel;\n"
3844 msgstr ""
3845
3846 #. type: Plain text
3847 #: build/C/man5/elf.5:1718
3848 msgid "Relocation structures that need an addend:"
3849 msgstr ""
3850
3851 #. type: Plain text
3852 #: build/C/man5/elf.5:1726
3853 #, no-wrap
3854 msgid ""
3855 "typedef struct {\n"
3856 "    Elf32_Addr r_offset;\n"
3857 "    uint32_t   r_info;\n"
3858 "    int32_t    r_addend;\n"
3859 "} Elf32_Rela;\n"
3860 msgstr ""
3861
3862 #. type: Plain text
3863 #: build/C/man5/elf.5:1736
3864 #, no-wrap
3865 msgid ""
3866 "typedef struct {\n"
3867 "    Elf64_Addr r_offset;\n"
3868 "    uint64_t   r_info;\n"
3869 "    int64_t    r_addend;\n"
3870 "} Elf64_Rela;\n"
3871 msgstr ""
3872
3873 #. type: TP
3874 #: build/C/man5/elf.5:1739
3875 #, no-wrap
3876 msgid "I<r_offset>"
3877 msgstr ""
3878
3879 #. type: Plain text
3880 #: build/C/man5/elf.5:1747
3881 msgid ""
3882 "This member gives the location at which to apply the relocation action.  For "
3883 "a relocatable file, the value is the byte offset from the beginning of the "
3884 "section to the storage unit affected by the relocation.  For an executable "
3885 "file or shared object, the value is the virtual address of the storage unit "
3886 "affected by the relocation."
3887 msgstr ""
3888
3889 #. type: TP
3890 #: build/C/man5/elf.5:1747
3891 #, no-wrap
3892 msgid "I<r_info>"
3893 msgstr ""
3894
3895 #. type: Plain text
3896 #: build/C/man5/elf.5:1762
3897 msgid ""
3898 "This member gives both the symbol table index with respect to which the "
3899 "relocation must be made and the type of relocation to apply.  Relocation "
3900 "types are processor specific.  When the text refers to a relocation entry's "
3901 "relocation type or symbol table index, it means the result of applying "
3902 "B<ELF_[32|64]_R_TYPE> or B<ELF[32|64]_R_SYM>, respectively, to the entry's "
3903 "I<r_info> member."
3904 msgstr ""
3905
3906 #. type: TP
3907 #: build/C/man5/elf.5:1762
3908 #, no-wrap
3909 msgid "I<r_addend>"
3910 msgstr ""
3911
3912 #.  .El
3913 #. type: Plain text
3914 #: build/C/man5/elf.5:1767
3915 msgid ""
3916 "This member specifies a constant addend used to compute the value to be "
3917 "stored into the relocatable field."
3918 msgstr ""
3919
3920 #. type: Plain text
3921 #: build/C/man5/elf.5:1772
3922 msgid ""
3923 "The .dynamic section contains a series of structures that hold relevant "
3924 "dynamic linking information.  The d_tag member controls the interpretation "
3925 "of d_un."
3926 msgstr ""
3927
3928 #. type: Plain text
3929 #: build/C/man5/elf.5:1783
3930 #, no-wrap
3931 msgid ""
3932 "typedef struct {\n"
3933 "    Elf32_Sword    d_tag;\n"
3934 "    union {\n"
3935 "        Elf32_Word d_val;\n"
3936 "        Elf32_Addr d_ptr;\n"
3937 "    } d_un;\n"
3938 "} Elf32_Dyn;\n"
3939 "extern Elf32_Dyn _DYNAMIC[];\n"
3940 msgstr ""
3941
3942 #. type: Plain text
3943 #: build/C/man5/elf.5:1796
3944 #, no-wrap
3945 msgid ""
3946 "typedef struct {\n"
3947 "    Elf64_Sxword    d_tag;\n"
3948 "    union {\n"
3949 "        Elf64_Xword d_val;\n"
3950 "        Elf64_Addr  d_ptr;\n"
3951 "    } d_un;\n"
3952 "} Elf64_Dyn;\n"
3953 "extern Elf64_Dyn _DYNAMIC[];\n"
3954 msgstr ""
3955
3956 #. type: TP
3957 #: build/C/man5/elf.5:1799
3958 #, no-wrap
3959 msgid "I<d_tag>"
3960 msgstr ""
3961
3962 #.  .Bl -tag -width "DT_SYMBOLIC"
3963 #. type: Plain text
3964 #: build/C/man5/elf.5:1803
3965 msgid "This member may have any of the following values:"
3966 msgstr ""
3967
3968 #. type: TP
3969 #: build/C/man5/elf.5:1804
3970 #, no-wrap
3971 msgid "B<DT_NULL>"
3972 msgstr ""
3973
3974 #. type: Plain text
3975 #: build/C/man5/elf.5:1807
3976 msgid "Marks end of dynamic section"
3977 msgstr ""
3978
3979 #. type: TP
3980 #: build/C/man5/elf.5:1807
3981 #, no-wrap
3982 msgid "B<DT_NEEDED>"
3983 msgstr ""
3984
3985 #. type: Plain text
3986 #: build/C/man5/elf.5:1810
3987 msgid "String table offset to name of a needed library"
3988 msgstr ""
3989
3990 #. type: TP
3991 #: build/C/man5/elf.5:1810
3992 #, no-wrap
3993 msgid "B<DT_PLTRELSZ>"
3994 msgstr ""
3995
3996 #. type: Plain text
3997 #: build/C/man5/elf.5:1813
3998 msgid "Size in bytes of PLT relocs"
3999 msgstr ""
4000
4001 #. type: TP
4002 #: build/C/man5/elf.5:1813
4003 #, no-wrap
4004 msgid "B<DT_PLTGOT>"
4005 msgstr ""
4006
4007 #. type: Plain text
4008 #: build/C/man5/elf.5:1816
4009 msgid "Address of PLT and/or GOT"
4010 msgstr ""
4011
4012 #. type: TP
4013 #: build/C/man5/elf.5:1816
4014 #, no-wrap
4015 msgid "B<DT_HASH>"
4016 msgstr ""
4017
4018 #. type: Plain text
4019 #: build/C/man5/elf.5:1819
4020 msgid "Address of symbol hash table"
4021 msgstr ""
4022
4023 #. type: TP
4024 #: build/C/man5/elf.5:1819
4025 #, no-wrap
4026 msgid "B<DT_STRTAB>"
4027 msgstr ""
4028
4029 #. type: Plain text
4030 #: build/C/man5/elf.5:1822
4031 msgid "Address of string table"
4032 msgstr ""
4033
4034 #. type: TP
4035 #: build/C/man5/elf.5:1822
4036 #, no-wrap
4037 msgid "B<DT_SYMTAB>"
4038 msgstr ""
4039
4040 #. type: Plain text
4041 #: build/C/man5/elf.5:1825
4042 msgid "Address of symbol table"
4043 msgstr ""
4044
4045 #. type: TP
4046 #: build/C/man5/elf.5:1825
4047 #, no-wrap
4048 msgid "B<DT_RELA>"
4049 msgstr ""
4050
4051 #. type: Plain text
4052 #: build/C/man5/elf.5:1828
4053 msgid "Address of Rela relocs table"
4054 msgstr ""
4055
4056 #. type: TP
4057 #: build/C/man5/elf.5:1828
4058 #, no-wrap
4059 msgid "B<DT_RELASZ>"
4060 msgstr ""
4061
4062 #. type: Plain text
4063 #: build/C/man5/elf.5:1831
4064 msgid "Size in bytes of Rela table"
4065 msgstr ""
4066
4067 #. type: TP
4068 #: build/C/man5/elf.5:1831
4069 #, no-wrap
4070 msgid "B<DT_RELAENT>"
4071 msgstr ""
4072
4073 #. type: Plain text
4074 #: build/C/man5/elf.5:1834
4075 msgid "Size in bytes of a Rela table entry"
4076 msgstr ""
4077
4078 #. type: TP
4079 #: build/C/man5/elf.5:1834
4080 #, no-wrap
4081 msgid "B<DT_STRSZ>"
4082 msgstr ""
4083
4084 #. type: Plain text
4085 #: build/C/man5/elf.5:1837
4086 msgid "Size in bytes of string table"
4087 msgstr ""
4088
4089 #. type: TP
4090 #: build/C/man5/elf.5:1837
4091 #, no-wrap
4092 msgid "B<DT_SYMENT>"
4093 msgstr ""
4094
4095 #. type: Plain text
4096 #: build/C/man5/elf.5:1840
4097 msgid "Size in bytes of a symbol table entry"
4098 msgstr ""
4099
4100 #. type: TP
4101 #: build/C/man5/elf.5:1840
4102 #, no-wrap
4103 msgid "B<DT_INIT>"
4104 msgstr ""
4105
4106 #. type: Plain text
4107 #: build/C/man5/elf.5:1843
4108 msgid "Address of the initialization function"
4109 msgstr ""
4110
4111 #. type: TP
4112 #: build/C/man5/elf.5:1843
4113 #, no-wrap
4114 msgid "B<DT_FINI>"
4115 msgstr ""
4116
4117 #. type: Plain text
4118 #: build/C/man5/elf.5:1846
4119 msgid "Address of the termination function"
4120 msgstr ""
4121
4122 #. type: TP
4123 #: build/C/man5/elf.5:1846
4124 #, no-wrap
4125 msgid "B<DT_SONAME>"
4126 msgstr ""
4127
4128 #. type: Plain text
4129 #: build/C/man5/elf.5:1849
4130 msgid "String table offset to name of shared object"
4131 msgstr ""
4132
4133 #. type: TP
4134 #: build/C/man5/elf.5:1849
4135 #, no-wrap
4136 msgid "B<DT_RPATH>"
4137 msgstr ""
4138
4139 #. type: Plain text
4140 #: build/C/man5/elf.5:1852
4141 msgid "String table offset to library search path (deprecated)"
4142 msgstr ""
4143
4144 #. type: TP
4145 #: build/C/man5/elf.5:1852
4146 #, no-wrap
4147 msgid "B<DT_SYMBOLIC>"
4148 msgstr ""
4149
4150 #. type: Plain text
4151 #: build/C/man5/elf.5:1855
4152 msgid "Alert linker to search this shared object before the executable for symbols"
4153 msgstr ""
4154
4155 #. type: TP
4156 #: build/C/man5/elf.5:1855
4157 #, no-wrap
4158 msgid "B<DT_REL>"
4159 msgstr ""
4160
4161 #. type: Plain text
4162 #: build/C/man5/elf.5:1858
4163 msgid "Address of Rel relocs table"
4164 msgstr ""
4165
4166 #. type: TP
4167 #: build/C/man5/elf.5:1858
4168 #, no-wrap
4169 msgid "B<DT_RELSZ>"
4170 msgstr ""
4171
4172 #. type: Plain text
4173 #: build/C/man5/elf.5:1861
4174 msgid "Size in bytes of Rel table"
4175 msgstr ""
4176
4177 #. type: TP
4178 #: build/C/man5/elf.5:1861
4179 #, no-wrap
4180 msgid "B<DT_RELENT>"
4181 msgstr ""
4182
4183 #. type: Plain text
4184 #: build/C/man5/elf.5:1864
4185 msgid "Size in bytes of a Rel table entry"
4186 msgstr ""
4187
4188 #. type: TP
4189 #: build/C/man5/elf.5:1864
4190 #, no-wrap
4191 msgid "B<DT_PLTREL>"
4192 msgstr ""
4193
4194 #. type: Plain text
4195 #: build/C/man5/elf.5:1867
4196 msgid "Type of reloc the PLT refers (Rela or Rel)"
4197 msgstr ""
4198
4199 #. type: TP
4200 #: build/C/man5/elf.5:1867
4201 #, no-wrap
4202 msgid "B<DT_DEBUG>"
4203 msgstr ""
4204
4205 #. type: Plain text
4206 #: build/C/man5/elf.5:1870
4207 msgid "Undefined use for debugging"
4208 msgstr ""
4209
4210 #. type: TP
4211 #: build/C/man5/elf.5:1870
4212 #, no-wrap
4213 msgid "B<DT_TEXTREL>"
4214 msgstr ""
4215
4216 #. type: Plain text
4217 #: build/C/man5/elf.5:1873
4218 msgid "Absence of this indicates no relocs should apply to a nonwritable segment"
4219 msgstr ""
4220
4221 #. type: TP
4222 #: build/C/man5/elf.5:1873
4223 #, no-wrap
4224 msgid "B<DT_JMPREL>"
4225 msgstr ""
4226
4227 #. type: Plain text
4228 #: build/C/man5/elf.5:1876
4229 msgid "Address of reloc entries solely for the PLT"
4230 msgstr ""
4231
4232 #. type: TP
4233 #: build/C/man5/elf.5:1876
4234 #, no-wrap
4235 msgid "B<DT_BIND_NOW>"
4236 msgstr ""
4237
4238 #. type: Plain text
4239 #: build/C/man5/elf.5:1880
4240 msgid ""
4241 "Instruct dynamic linker to process all relocs before transferring control to "
4242 "the executable"
4243 msgstr ""
4244
4245 #. type: TP
4246 #: build/C/man5/elf.5:1880
4247 #, no-wrap
4248 msgid "B<DT_RUNPATH>"
4249 msgstr ""
4250
4251 #. type: Plain text
4252 #: build/C/man5/elf.5:1883
4253 msgid "String table offset to library search path"
4254 msgstr ""
4255
4256 #. type: TP
4257 #: build/C/man5/elf.5:1883
4258 #, no-wrap
4259 msgid "B<DT_LOPROC>"
4260 msgstr ""
4261
4262 #. type: Plain text
4263 #: build/C/man5/elf.5:1886
4264 msgid "Start of processor-specific semantics"
4265 msgstr ""
4266
4267 #. type: TP
4268 #: build/C/man5/elf.5:1886
4269 #, no-wrap
4270 msgid "B<DT_HIPROC>"
4271 msgstr ""
4272
4273 #. type: Plain text
4274 #: build/C/man5/elf.5:1889
4275 msgid "End of processor-specific semantics"
4276 msgstr ""
4277
4278 #. type: TP
4279 #: build/C/man5/elf.5:1891
4280 #, no-wrap
4281 msgid "I<d_val>"
4282 msgstr ""
4283
4284 #. type: Plain text
4285 #: build/C/man5/elf.5:1894
4286 msgid "This member represents integer values with various interpretations."
4287 msgstr ""
4288
4289 #. type: TP
4290 #: build/C/man5/elf.5:1894
4291 #, no-wrap
4292 msgid "I<d_ptr>"
4293 msgstr ""
4294
4295 #. type: Plain text
4296 #: build/C/man5/elf.5:1902
4297 msgid ""
4298 "This member represents program virtual addresses.  When interpreting these "
4299 "addresses, the actual address should be computed based on the original file "
4300 "value and memory base address.  Files do not contain relocation entries to "
4301 "fixup these addresses."
4302 msgstr ""
4303
4304 #. type: TP
4305 #: build/C/man5/elf.5:1902
4306 #, no-wrap
4307 msgid "I<_DYNAMIC>"
4308 msgstr ""
4309
4310 #.  .El
4311 #. type: Plain text
4312 #: build/C/man5/elf.5:1907
4313 msgid ""
4314 "Array containing all the dynamic structures in the .dynamic section.  This "
4315 "is automatically populated by the linker."
4316 msgstr ""
4317
4318 #.  OpenBSD
4319 #.  ELF support first appeared in
4320 #.  OpenBSD 1.2,
4321 #.  although not all supported platforms use it as the native
4322 #.  binary file format.
4323 #. type: Plain text
4324 #: build/C/man5/elf.5:1916
4325 msgid "ELF first appeared in System V.  The ELF format is an adopted standard."
4326 msgstr ""
4327
4328 #.  .SH AUTHORS
4329 #.  The original version of this manual page was written by
4330 #.  .An Jeroen Ruigrok van der Werven
4331 #.  .Aq asmodai@FreeBSD.org
4332 #.  with inspiration from BSDi's
4333 #.  .Bsx
4334 #.  .Nm elf
4335 #.  man page.
4336 #. type: Plain text
4337 #: build/C/man5/elf.5:1934
4338 msgid ""
4339 "The extensions for I<e_phnum>, I<e_shnum> and I<e_strndx> respectively are "
4340 "Linux extensions.  Sun, BSD and AMD64 also support them; for further "
4341 "information, look under SEE ALSO."
4342 msgstr ""
4343
4344 #. type: Plain text
4345 #: build/C/man5/elf.5:1941
4346 msgid "B<as>(1), B<gdb>(1), B<ld>(1), B<objdump>(1), B<execve>(2), B<core>(5)"
4347 msgstr ""
4348
4349 #. type: Plain text
4350 #: build/C/man5/elf.5:1944
4351 msgid "Hewlett-Packard, I<Elf-64 Object File Format>."
4352 msgstr ""
4353
4354 #. type: Plain text
4355 #: build/C/man5/elf.5:1947
4356 msgid "Santa Cruz Operation, I<System V Application Binary Interface>."
4357 msgstr ""
4358
4359 #. type: Plain text
4360 #: build/C/man5/elf.5:1951
4361 msgid ""
4362 "UNIX System Laboratories, \"Object Files\", I<Executable and Linking Format "
4363 "(ELF)>."
4364 msgstr ""
4365
4366 #. type: Plain text
4367 #: build/C/man5/elf.5:1954
4368 msgid "Sun Microsystems, I<Linker and Libraries Guide>."
4369 msgstr ""
4370
4371 #. type: Plain text
4372 #: build/C/man5/elf.5:1957
4373 msgid ""
4374 "AMD64 ABI Draft, I<System V Application Binary Interface AMD64 Architecture "
4375 "Processor Supplement>."
4376 msgstr ""
4377
4378 #. type: TH
4379 #: build/C/man3/end.3:25
4380 #, no-wrap
4381 msgid "END"
4382 msgstr ""
4383
4384 #. type: TH
4385 #: build/C/man3/end.3:25
4386 #, no-wrap
4387 msgid "2008-07-17"
4388 msgstr ""
4389
4390 #. type: Plain text
4391 #: build/C/man3/end.3:28
4392 msgid "etext, edata, end - end of program segments"
4393 msgstr ""
4394
4395 #. type: Plain text
4396 #: build/C/man3/end.3:33
4397 #, no-wrap
4398 msgid ""
4399 "B<extern>I< etext>B<;>\n"
4400 "B<extern>I< edata>B<;>\n"
4401 "B<extern>I< end>B<;>\n"
4402 msgstr ""
4403
4404 #. type: Plain text
4405 #: build/C/man3/end.3:37
4406 msgid "The addresses of these symbols indicate the end of various program segments:"
4407 msgstr ""
4408
4409 #. type: TP
4410 #: build/C/man3/end.3:37
4411 #, no-wrap
4412 msgid "I<etext>"
4413 msgstr ""
4414
4415 #. type: Plain text
4416 #: build/C/man3/end.3:41
4417 msgid ""
4418 "This is the first address past the end of the text segment (the program "
4419 "code)."
4420 msgstr ""
4421
4422 #. type: TP
4423 #: build/C/man3/end.3:41
4424 #, no-wrap
4425 msgid "I<edata>"
4426 msgstr ""
4427
4428 #. type: Plain text
4429 #: build/C/man3/end.3:45
4430 msgid "This is the first address past the end of the initialized data segment."
4431 msgstr ""
4432
4433 #. type: TP
4434 #: build/C/man3/end.3:45
4435 #, no-wrap
4436 msgid "I<end>"
4437 msgstr ""
4438
4439 #. type: Plain text
4440 #: build/C/man3/end.3:49
4441 msgid ""
4442 "This is the first address past the end of the uninitialized data segment "
4443 "(also known as the BSS segment)."
4444 msgstr ""
4445
4446 #. type: Plain text
4447 #: build/C/man3/end.3:52
4448 msgid ""
4449 "Although these symbols have long been provided on most UNIX systems, they "
4450 "are not standardized; use with caution."
4451 msgstr ""
4452
4453 #. type: Plain text
4454 #: build/C/man3/end.3:55
4455 msgid ""
4456 "The program must explicitly declare these symbols; they are not defined in "
4457 "any header file."
4458 msgstr ""
4459
4460 #. type: Plain text
4461 #: build/C/man3/end.3:63
4462 msgid ""
4463 "On some systems the names of these symbols are preceded by underscores, "
4464 "thus: I<_etext>, I<_edata>, and I<_end>.  These symbols are also defined for "
4465 "programs compiled on Linux."
4466 msgstr ""
4467
4468 #. type: Plain text
4469 #: build/C/man3/end.3:75
4470 msgid ""
4471 "At the start of program execution, the program break will be somewhere near "
4472 "I<&end> (perhaps at the start of the following page).  However, the break "
4473 "will change as memory is allocated via B<brk>(2)  or B<malloc>(3).  Use "
4474 "B<sbrk>(2)  with an argument of zero to find the current value of the "
4475 "program break."
4476 msgstr ""
4477
4478 #. type: Plain text
4479 #: build/C/man3/end.3:77
4480 msgid "When run, the program below produces output such as the following:"
4481 msgstr ""
4482
4483 #. type: Plain text
4484 #: build/C/man3/end.3:85
4485 #, no-wrap
4486 msgid ""
4487 "$B< ./a.out>\n"
4488 "First address past:\n"
4489 "    program text (etext)       0x8048568\n"
4490 "    initialized data (edata)   0x804a01c\n"
4491 "    uninitialized data (end)   0x804a024\n"
4492 msgstr ""
4493
4494 #. type: SS
4495 #: build/C/man3/end.3:87
4496 #, no-wrap
4497 msgid "Program source"
4498 msgstr ""
4499
4500 #. type: Plain text
4501 #: build/C/man3/end.3:92
4502 #, no-wrap
4503 msgid ""
4504 "#include E<lt>stdio.hE<gt>\n"
4505 "#include E<lt>stdlib.hE<gt>\n"
4506 msgstr ""
4507
4508 #. type: Plain text
4509 #: build/C/man3/end.3:95
4510 #, no-wrap
4511 msgid ""
4512 "extern char etext, edata, end; /* The symbols must have some type,\n"
4513 "                                   or \"gcc -Wall\" complains */\n"
4514 msgstr ""
4515
4516 #. type: Plain text
4517 #: build/C/man3/end.3:103
4518 #, no-wrap
4519 msgid ""
4520 "int\n"
4521 "main(int argc, char *argv[])\n"
4522 "{\n"
4523 "    printf(\"First address past:\\en\");\n"
4524 "    printf(\"    program text (etext)      %10p\\en\", &etext);\n"
4525 "    printf(\"    initialized data (edata)  %10p\\en\", &edata);\n"
4526 "    printf(\"    uninitialized data (end)  %10p\\en\", &end);\n"
4527 msgstr ""
4528
4529 #. type: Plain text
4530 #: build/C/man3/end.3:112
4531 msgid "B<objdump>(1), B<readelf>(1), B<sbrk>(2), B<elf>(5)"
4532 msgstr ""
4533
4534 #. type: TH
4535 #: build/C/man8/ld.so.8:2
4536 #, no-wrap
4537 msgid "LD.SO"
4538 msgstr ""
4539
4540 #. type: TH
4541 #: build/C/man8/ld.so.8:2
4542 #, no-wrap
4543 msgid "2012-03-06"
4544 msgstr ""
4545
4546 #. type: Plain text
4547 #: build/C/man8/ld.so.8:5
4548 msgid "ld.so, ld-linux.so* - dynamic linker/loader"
4549 msgstr ""
4550
4551 #. type: Plain text
4552 #: build/C/man8/ld.so.8:12
4553 msgid ""
4554 "The dynamic linker can be run either indirectly by running some dynamically "
4555 "linked program or library (in which case no command-line options to the "
4556 "dynamic linker can be passed and, in the ELF case, the dynamic linker which "
4557 "is stored in the B<.interp> section of the program is executed) or directly "
4558 "by running:"
4559 msgstr ""
4560
4561 #. type: Plain text
4562 #: build/C/man8/ld.so.8:15
4563 msgid "I</lib/ld-linux.so.*> [OPTIONS] [PROGRAM [ARGUMENTS]]"
4564 msgstr ""
4565
4566 #. type: Plain text
4567 #: build/C/man8/ld.so.8:22
4568 msgid ""
4569 "The programs B<ld.so> and B<ld-linux.so*> find and load the shared libraries "
4570 "needed by a program, prepare the program to run, and then run it."
4571 msgstr ""
4572
4573 #. type: Plain text
4574 #: build/C/man8/ld.so.8:29
4575 msgid ""
4576 "Linux binaries require dynamic linking (linking at run time)  unless the "
4577 "B<-static> option was given to B<ld>(1)  during compilation."
4578 msgstr ""
4579
4580 #. type: Plain text
4581 #: build/C/man8/ld.so.8:42
4582 msgid ""
4583 "The program B<ld.so> handles a.out binaries, a format used long ago; "
4584 "B<ld-linux.so*> handles ELF (I</lib/ld-linux.so.1> for libc5, "
4585 "I</lib/ld-linux.so.2> for glibc2), which everybody has been using for years "
4586 "now.  Otherwise both have the same behavior, and use the same support files "
4587 "and programs B<ldd>(1), B<ldconfig>(8)  and I</etc/ld.so.conf>."
4588 msgstr ""
4589
4590 #. type: Plain text
4591 #: build/C/man8/ld.so.8:45
4592 msgid ""
4593 "The shared libraries needed by the program are searched for in the following "
4594 "order:"
4595 msgstr ""
4596
4597 #. type: Plain text
4598 #: build/C/man8/ld.so.8:50
4599 msgid ""
4600 "(ELF only) Using the directories specified in the DT_RPATH dynamic section "
4601 "attribute of the binary if present and DT_RUNPATH attribute does not exist.  "
4602 "Use of DT_RPATH is deprecated."
4603 msgstr ""
4604
4605 #. type: Plain text
4606 #: build/C/man8/ld.so.8:55
4607 msgid ""
4608 "Using the environment variable B<LD_LIBRARY_PATH>.  Except if the executable "
4609 "is a set-user-ID/set-group-ID binary, in which case it is ignored."
4610 msgstr ""
4611
4612 #. type: Plain text
4613 #: build/C/man8/ld.so.8:59
4614 msgid ""
4615 "(ELF only) Using the directories specified in the DT_RUNPATH dynamic section "
4616 "attribute of the binary if present."
4617 msgstr ""
4618
4619 #. type: Plain text
4620 #: build/C/man8/ld.so.8:67
4621 msgid ""
4622 "From the cache file I</etc/ld.so.cache> which contains a compiled list of "
4623 "candidate libraries previously found in the augmented library path.  If, "
4624 "however, the binary was linked with the B<-z nodeflib> linker option, "
4625 "libraries in the default library paths are skipped."
4626 msgstr ""
4627
4628 #. type: Plain text
4629 #: build/C/man8/ld.so.8:75
4630 msgid ""
4631 "In the default path I</lib>, and then I</usr/lib>.  If the binary was linked "
4632 "with the B<-z nodeflib> linker option, this step is skipped."
4633 msgstr ""
4634
4635 #. type: SS
4636 #: build/C/man8/ld.so.8:75
4637 #, no-wrap
4638 msgid "$ORIGIN and rpath"
4639 msgstr ""
4640
4641 #.  ld.so also understands $LIB, with the same meaning as $ORIGIN/lib,
4642 #.  it appears.
4643 #
4644 #.  There is also $PLATFORM.  This is a kind of wildcard
4645 #.  of directories related at AT_HWCAP.  To get an idea of the
4646 #.  places that $PLATFORM would match, look at the output of the
4647 #.  following:
4648 #
4649 #.  mkdir /tmp/d
4650 #.  LD_LIBRARY_PATH=/tmp/d strace -e open /bin/date 2>&1 | grep /tmp/d
4651 #
4652 #.  ld.so lets names be abbreviated, so $O will work for $ORIGIN;
4653 #.  Don't do this!!
4654 #. type: Plain text
4655 #: build/C/man8/ld.so.8:110
4656 msgid ""
4657 "B<ld.so> understands the string I<$ORIGIN> (or equivalently I<${ORIGIN}>)  "
4658 "in an rpath specification (DT_RPATH or DT_RUNPATH) to mean the directory "
4659 "containing the application executable.  Thus, an application located in "
4660 "I<somedir/app> could be compiled with I<gcc "
4661 "-Wl,-rpath,\\(aq$ORIGIN/../lib\\(aq> so that it finds an associated shared "
4662 "library in I<somedir/lib> no matter where I<somedir> is located in the "
4663 "directory hierarchy.  This facilitates the creation of \"turn-key\" "
4664 "applications that do not need to be installed into special directories, but "
4665 "can instead be unpacked into any directory and still find their own shared "
4666 "libraries."
4667 msgstr ""
4668
4669 #. type: SH
4670 #: build/C/man8/ld.so.8:110 build/C/man8/ldconfig.8:100 build/C/man1/ldd.1:19
4671 #, no-wrap
4672 msgid "OPTIONS"
4673 msgstr ""
4674
4675 #. type: TP
4676 #: build/C/man8/ld.so.8:111
4677 #, no-wrap
4678 msgid "B<--list>"
4679 msgstr ""
4680
4681 #. type: Plain text
4682 #: build/C/man8/ld.so.8:114
4683 msgid "List all dependencies and how they are resolved."
4684 msgstr ""
4685
4686 #. type: TP
4687 #: build/C/man8/ld.so.8:114
4688 #, no-wrap
4689 msgid "B<--verify>"
4690 msgstr ""
4691
4692 #. type: Plain text
4693 #: build/C/man8/ld.so.8:118
4694 msgid ""
4695 "Verify that program is dynamically linked and this dynamic linker can handle "
4696 "it."
4697 msgstr ""
4698
4699 #. type: TP
4700 #: build/C/man8/ld.so.8:118
4701 #, no-wrap
4702 msgid "B<--library-path PATH>"
4703 msgstr ""
4704
4705 #. type: Plain text
4706 #: build/C/man8/ld.so.8:123
4707 msgid ""
4708 "Use PATH instead of B<LD_LIBRARY_PATH> environment variable setting (see "
4709 "below)."
4710 msgstr ""
4711
4712 #. type: TP
4713 #: build/C/man8/ld.so.8:123
4714 #, no-wrap
4715 msgid "B<--inhibit-rpath LIST>"
4716 msgstr ""
4717
4718 #. type: Plain text
4719 #: build/C/man8/ld.so.8:129
4720 msgid ""
4721 "Ignore RPATH and RUNPATH information in object names in LIST.  This option "
4722 "is ignored if B<ld.so> is set-user-ID or set-group-ID."
4723 msgstr ""
4724
4725 #. type: TP
4726 #: build/C/man8/ld.so.8:129
4727 #, no-wrap
4728 msgid "B<--audit LIST>"
4729 msgstr ""
4730
4731 #. type: Plain text
4732 #: build/C/man8/ld.so.8:132
4733 msgid "Use objects named in LIST as auditors."
4734 msgstr ""
4735
4736 #. type: SH
4737 #: build/C/man8/ld.so.8:132
4738 #, no-wrap
4739 msgid "ENVIRONMENT"
4740 msgstr ""
4741
4742 #. type: Plain text
4743 #: build/C/man8/ld.so.8:134
4744 msgid "There are four important environment variables."
4745 msgstr ""
4746
4747 #. type: TP
4748 #: build/C/man8/ld.so.8:134
4749 #, no-wrap
4750 msgid "B<LD_BIND_NOW>"
4751 msgstr ""
4752
4753 #. type: Plain text
4754 #: build/C/man8/ld.so.8:142
4755 msgid ""
4756 "(libc5; glibc since 2.1.1)  If set to a nonempty string, causes the dynamic "
4757 "linker to resolve all symbols at program startup instead of deferring "
4758 "function call resolution to the point when they are first referenced.  This "
4759 "is useful when using a debugger."
4760 msgstr ""
4761
4762 #. type: TP
4763 #: build/C/man8/ld.so.8:142
4764 #, no-wrap
4765 msgid "B<LD_LIBRARY_PATH>"
4766 msgstr ""
4767
4768 #. type: Plain text
4769 #: build/C/man8/ld.so.8:149
4770 msgid ""
4771 "A colon-separated list of directories in which to search for ELF libraries "
4772 "at execution-time.  Similar to the B<PATH> environment variable."
4773 msgstr ""
4774
4775 #. type: TP
4776 #: build/C/man8/ld.so.8:149
4777 #, no-wrap
4778 msgid "B<LD_PRELOAD>"
4779 msgstr ""
4780
4781 #. type: Plain text
4782 #: build/C/man8/ld.so.8:157
4783 msgid ""
4784 "A whitespace-separated list of additional, user-specified, ELF shared "
4785 "libraries to be loaded before all others.  This can be used to selectively "
4786 "override functions in other shared libraries.  For set-user-ID/set-group-ID "
4787 "ELF binaries, only libraries in the standard search directories that are "
4788 "also set-user-ID will be loaded."
4789 msgstr ""
4790
4791 #. type: TP
4792 #: build/C/man8/ld.so.8:157
4793 #, no-wrap
4794 msgid "B<LD_TRACE_LOADED_OBJECTS>"
4795 msgstr ""
4796
4797 #. type: Plain text
4798 #: build/C/man8/ld.so.8:164
4799 msgid ""
4800 "(ELF only)  If set to a nonempty string, causes the program to list its "
4801 "dynamic library dependencies, as if run by B<ldd>(1), instead of running "
4802 "normally."
4803 msgstr ""
4804
4805 #. type: Plain text
4806 #: build/C/man8/ld.so.8:167
4807 msgid ""
4808 "Then there are lots of more or less obscure variables, many obsolete or only "
4809 "for internal use."
4810 msgstr ""
4811
4812 #. type: TP
4813 #: build/C/man8/ld.so.8:167
4814 #, no-wrap
4815 msgid "B<LD_AOUT_LIBRARY_PATH>"
4816 msgstr ""
4817
4818 #. type: Plain text
4819 #: build/C/man8/ld.so.8:175
4820 msgid ""
4821 "(libc5)  Version of B<LD_LIBRARY_PATH> for a.out binaries only.  Old "
4822 "versions of ld-linux.so.1 also supported B<LD_ELF_LIBRARY_PATH>."
4823 msgstr ""
4824
4825 #. type: TP
4826 #: build/C/man8/ld.so.8:175
4827 #, no-wrap
4828 msgid "B<LD_AOUT_PRELOAD>"
4829 msgstr ""
4830
4831 #. type: Plain text
4832 #: build/C/man8/ld.so.8:183
4833 msgid ""
4834 "(libc5)  Version of B<LD_PRELOAD> for a.out binaries only.  Old versions of "
4835 "ld-linux.so.1 also supported B<LD_ELF_PRELOAD>."
4836 msgstr ""
4837
4838 #. type: TP
4839 #: build/C/man8/ld.so.8:183
4840 #, no-wrap
4841 msgid "B<LD_AUDIT>"
4842 msgstr ""
4843
4844 #. type: Plain text
4845 #: build/C/man8/ld.so.8:193
4846 msgid ""
4847 "(glibc since 2.4)  A colon-separated list of user-specified, ELF shared "
4848 "objects to be loaded before all others in a separate linker namespace (i.e., "
4849 "one that does not intrude upon the normal symbol bindings that would occur "
4850 "in the process).  These libraries can be used to audit the operation of the "
4851 "dynamic linker.  B<LD_AUDIT> is ignored for set-user-ID/set-group-ID "
4852 "binaries."
4853 msgstr ""
4854
4855 #. type: Plain text
4856 #: build/C/man8/ld.so.8:206
4857 msgid ""
4858 "The dynamic linker will notify the audit libraries at so-called auditing "
4859 "checkpoints\\(emfor example, loading a new library, resolving a symbol, or "
4860 "calling a symbol from another shared object\\(emby calling an appropriate "
4861 "function within the audit library.  For details, see B<rtld-audit>(7).  The "
4862 "auditing interface is largely compatible with that provided on Solaris, as "
4863 "described in its I<Linker and Libraries Guide>, in the chapter I<Runtime "
4864 "Linker Auditing Interface>."
4865 msgstr ""
4866
4867 #. type: TP
4868 #: build/C/man8/ld.so.8:206
4869 #, no-wrap
4870 msgid "B<LD_BIND_NOT>"
4871 msgstr ""
4872
4873 #. type: Plain text
4874 #: build/C/man8/ld.so.8:211
4875 msgid ""
4876 "(glibc since 2.1.95)  Do not update the GOT (global offset table) and PLT "
4877 "(procedure linkage table)  after resolving a symbol."
4878 msgstr ""
4879
4880 #. type: TP
4881 #: build/C/man8/ld.so.8:211
4882 #, no-wrap
4883 msgid "B<LD_DEBUG>"
4884 msgstr ""
4885
4886 #. type: Plain text
4887 #: build/C/man8/ld.so.8:224
4888 msgid ""
4889 "(glibc since 2.1)  Output verbose debugging information about the dynamic "
4890 "linker.  If set to B<all> prints all debugging information it has, if set to "
4891 "B<help> prints a help message about which categories can be specified in "
4892 "this environment variable.  Since glibc 2.3.4, B<LD_DEBUG> is ignored for "
4893 "set-user-ID/set-group-ID binaries."
4894 msgstr ""
4895
4896 #. type: TP
4897 #: build/C/man8/ld.so.8:224
4898 #, no-wrap
4899 msgid "B<LD_DEBUG_OUTPUT>"
4900 msgstr ""
4901
4902 #. type: Plain text
4903 #: build/C/man8/ld.so.8:232
4904 msgid ""
4905 "(glibc since 2.1)  File where B<LD_DEBUG> output should be fed into, default "
4906 "is standard output.  B<LD_DEBUG_OUTPUT> is ignored for "
4907 "set-user-ID/set-group-ID binaries."
4908 msgstr ""
4909
4910 #. type: TP
4911 #: build/C/man8/ld.so.8:232
4912 #, no-wrap
4913 msgid "B<LD_DYNAMIC_WEAK>"
4914 msgstr ""
4915
4916 #. type: Plain text
4917 #: build/C/man8/ld.so.8:239
4918 msgid ""
4919 "(glibc since 2.1.91)  Allow weak symbols to be overridden (reverting to old "
4920 "glibc behavior).  For security reasons, since glibc 2.3.4, "
4921 "B<LD_DYNAMIC_WEAK> is ignored for set-user-ID/set-group-ID binaries."
4922 msgstr ""
4923
4924 #. type: TP
4925 #: build/C/man8/ld.so.8:239
4926 #, no-wrap
4927 msgid "B<LD_HWCAP_MASK>"
4928 msgstr ""
4929
4930 #. type: Plain text
4931 #: build/C/man8/ld.so.8:243
4932 msgid "(glibc since 2.1)  Mask for hardware capabilities."
4933 msgstr ""
4934
4935 #. type: TP
4936 #: build/C/man8/ld.so.8:243
4937 #, no-wrap
4938 msgid "B<LD_KEEPDIR>"
4939 msgstr ""
4940
4941 #. type: Plain text
4942 #: build/C/man8/ld.so.8:248
4943 msgid ""
4944 "(a.out only)(libc5)  Don't ignore the directory in the names of a.out "
4945 "libraries to be loaded.  Use of this option is strongly discouraged."
4946 msgstr ""
4947
4948 #. type: TP
4949 #: build/C/man8/ld.so.8:248
4950 #, no-wrap
4951 msgid "B<LD_NOWARN>"
4952 msgstr ""
4953
4954 #. type: Plain text
4955 #: build/C/man8/ld.so.8:253
4956 msgid ""
4957 "(a.out only)(libc5)  Suppress warnings about a.out libraries with "
4958 "incompatible minor version numbers."
4959 msgstr ""
4960
4961 #. type: TP
4962 #: build/C/man8/ld.so.8:253
4963 #, no-wrap
4964 msgid "B<LD_ORIGIN_PATH>"
4965 msgstr ""
4966
4967 #.  Only used if $ORIGIN can't be determined by normal means
4968 #.  (from the origin path saved at load time, or from /proc/self/exe)?
4969 #. type: Plain text
4970 #: build/C/man8/ld.so.8:262
4971 msgid ""
4972 "(glibc since 2.1)  Path where the binary is found (for non-set-user-ID "
4973 "programs).  For security reasons, since glibc 2.4, B<LD_ORIGIN_PATH> is "
4974 "ignored for set-user-ID/set-group-ID binaries."
4975 msgstr ""
4976
4977 #. type: TP
4978 #: build/C/man8/ld.so.8:262
4979 #, no-wrap
4980 msgid "B<LD_POINTER_GUARD>"
4981 msgstr ""
4982
4983 #. type: Plain text
4984 #: build/C/man8/ld.so.8:274
4985 msgid ""
4986 "(glibc since 2.4)  Set to 0 to disable pointer guarding.  Any other value "
4987 "enables pointer guarding, which is also the default.  Pointer guarding is a "
4988 "security mechanism whereby some pointers to code stored in writable program "
4989 "memory (return addresses saved by B<setjmp>(3)  or function pointers used by "
4990 "various glibc internals) are mangled semi-randomly to make it more difficult "
4991 "for an attacker to hijack the pointers for use in the event of a buffer "
4992 "overrun or stack-smashing attack."
4993 msgstr ""
4994
4995 #. type: TP
4996 #: build/C/man8/ld.so.8:274
4997 #, no-wrap
4998 msgid "B<LD_PROFILE>"
4999 msgstr ""
5000
5001 #. type: Plain text
5002 #: build/C/man8/ld.so.8:281
5003 msgid ""
5004 "(glibc since 2.1)  Shared object to be profiled, specified either as a "
5005 "pathname or a soname.  Profiling output is written to the file whose name "
5006 "is: \"I<$LD_PROFILE_OUTPUT>/I<$LD_PROFILE>.profile\"."
5007 msgstr ""
5008
5009 #. type: TP
5010 #: build/C/man8/ld.so.8:281
5011 #, no-wrap
5012 msgid "B<LD_PROFILE_OUTPUT>"
5013 msgstr ""
5014
5015 #. type: Plain text
5016 #: build/C/man8/ld.so.8:294
5017 msgid ""
5018 "(glibc since 2.1)  Directory where B<LD_PROFILE> output should be written.  "
5019 "If this variable is not defined, or is defined as an empty string, then the "
5020 "default is I</var/tmp>.  B<LD_PROFILE_OUTPUT> is ignored for set-user-ID and "
5021 "set-group-ID programs, which always use I</var/profile>."
5022 msgstr ""
5023
5024 #. type: TP
5025 #: build/C/man8/ld.so.8:294
5026 #, no-wrap
5027 msgid "B<LD_SHOW_AUXV>"
5028 msgstr ""
5029
5030 #.  FIXME
5031 #.  Document LD_TRACE_PRELINKING (e.g.: LD_TRACE_PRELINKING=libx1.so ./prog)
5032 #.  Since glibc 2.3
5033 #.  Also enables DL_DEBUG_PRELINK
5034 #. type: Plain text
5035 #: build/C/man8/ld.so.8:305
5036 msgid ""
5037 "(glibc since 2.1)  Show auxiliary array passed up from the kernel.  For "
5038 "security reasons, since glibc 2.3.5, B<LD_SHOW_AUXV> is ignored for "
5039 "set-user-ID/set-group-ID binaries."
5040 msgstr ""
5041
5042 #. type: TP
5043 #: build/C/man8/ld.so.8:305
5044 #, no-wrap
5045 msgid "B<LD_USE_LOAD_BIAS>"
5046 msgstr ""
5047
5048 #.  http://sources.redhat.com/ml/libc-hacker/2003-11/msg00127.html
5049 #.  Subject: [PATCH] Support LD_USE_LOAD_BIAS
5050 #.  Jakub Jelinek
5051 #. type: Plain text
5052 #: build/C/man8/ld.so.8:324
5053 msgid ""
5054 "By default (i.e., if this variable is not defined)  executables and "
5055 "prelinked shared objects will honor base addresses of their dependent "
5056 "libraries and (nonprelinked) position-independent executables (PIEs)  and "
5057 "other shared objects will not honor them.  If B<LD_USE_LOAD_BIAS> is defined "
5058 "wit the value, both executables and PIEs will honor the base addresses.  If "
5059 "B<LD_USE_LOAD_BIAS> is defined with the value 0, neither executables nor "
5060 "PIEs will honor the base addresses.  This variable is ignored by set-user-ID "
5061 "and set-group-ID programs."
5062 msgstr ""
5063
5064 #. type: TP
5065 #: build/C/man8/ld.so.8:324
5066 #, no-wrap
5067 msgid "B<LD_VERBOSE>"
5068 msgstr ""
5069
5070 #. type: Plain text
5071 #: build/C/man8/ld.so.8:336
5072 msgid ""
5073 "(glibc since 2.1)  If set to a nonempty string, output symbol versioning "
5074 "information about the program if querying information about the program "
5075 "(i.e., either B<LD_TRACE_LOADED_OBJECTS> has been set, or B<--list> or "
5076 "B<--verify> options have been given to the dynamic linker)."
5077 msgstr ""
5078
5079 #. type: TP
5080 #: build/C/man8/ld.so.8:336
5081 #, no-wrap
5082 msgid "B<LD_WARN>"
5083 msgstr ""
5084
5085 #. type: Plain text
5086 #: build/C/man8/ld.so.8:340
5087 msgid ""
5088 "(ELF only)(glibc since 2.1.3)  If set to a nonempty string, warn about "
5089 "unresolved symbols."
5090 msgstr ""
5091
5092 #. type: TP
5093 #: build/C/man8/ld.so.8:340
5094 #, no-wrap
5095 msgid "B<LDD_ARGV0>"
5096 msgstr ""
5097
5098 #. type: Plain text
5099 #: build/C/man8/ld.so.8:347
5100 msgid "(libc5)  I<argv>[0] to be used by B<ldd>(1)  when none is present."
5101 msgstr ""
5102
5103 #. type: SH
5104 #: build/C/man8/ld.so.8:347 build/C/man8/ldconfig.8:156
5105 #, no-wrap
5106 msgid "FILES"
5107 msgstr ""
5108
5109 #. type: TP
5110 #: build/C/man8/ld.so.8:349 build/C/man8/ldconfig.8:158
5111 #, no-wrap
5112 msgid "I</lib/ld.so>"
5113 msgstr ""
5114
5115 #. type: Plain text
5116 #: build/C/man8/ld.so.8:352
5117 msgid "a.out dynamic linker/loader"
5118 msgstr ""
5119
5120 #. type: TP
5121 #: build/C/man8/ld.so.8:352
5122 #, no-wrap
5123 msgid "I</lib/ld-linux.so.>{I<1>,I<2>}"
5124 msgstr ""
5125
5126 #. type: Plain text
5127 #: build/C/man8/ld.so.8:355
5128 msgid "ELF dynamic linker/loader"
5129 msgstr ""
5130
5131 #. type: TP
5132 #: build/C/man8/ld.so.8:355 build/C/man8/ldconfig.8:165
5133 #, no-wrap
5134 msgid "I</etc/ld.so.cache>"
5135 msgstr ""
5136
5137 #. type: Plain text
5138 #: build/C/man8/ld.so.8:359
5139 msgid ""
5140 "File containing a compiled list of directories in which to search for "
5141 "libraries and an ordered list of candidate libraries."
5142 msgstr ""
5143
5144 #. type: TP
5145 #: build/C/man8/ld.so.8:359
5146 #, no-wrap
5147 msgid "I</etc/ld.so.preload>"
5148 msgstr ""
5149
5150 #. type: Plain text
5151 #: build/C/man8/ld.so.8:363
5152 msgid ""
5153 "File containing a whitespace separated list of ELF shared libraries to be "
5154 "loaded before the program."
5155 msgstr ""
5156
5157 #. type: TP
5158 #: build/C/man8/ld.so.8:363
5159 #, no-wrap
5160 msgid "B<lib*.so*>"
5161 msgstr ""
5162
5163 #. type: Plain text
5164 #: build/C/man8/ld.so.8:366
5165 msgid "shared libraries"
5166 msgstr ""
5167
5168 #. type: Plain text
5169 #: build/C/man8/ld.so.8:373
5170 msgid ""
5171 "The B<ld.so> functionality is available for executables compiled using libc "
5172 "version 4.4.3 or greater.  ELF functionality is available since Linux 1.1.52 "
5173 "and libc5."
5174 msgstr ""
5175
5176 #.  .SH AUTHORS
5177 #.  ld.so: David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus
5178 #.   Torvalds, Lars Wirzenius and Mitch D'Souza
5179 #.  ld-linux.so: Roland McGrath, Ulrich Drepper and others.
5180 #
5181 #.  In the above, (libc5) stands for David Engel's ld.so/ld-linux.so.
5182 #. type: Plain text
5183 #: build/C/man8/ld.so.8:383
5184 msgid "B<ldd>(1), B<rtld-audit>(7), B<ldconfig>(8)"
5185 msgstr ""
5186
5187 #. type: TH
5188 #: build/C/man8/ldconfig.8:22
5189 #, no-wrap
5190 msgid "LDCONFIG"
5191 msgstr ""
5192
5193 #. type: TH
5194 #: build/C/man8/ldconfig.8:22
5195 #, no-wrap
5196 msgid "2009-04-15"
5197 msgstr ""
5198
5199 #. type: Plain text
5200 #: build/C/man8/ldconfig.8:25
5201 msgid "/sbin/ldconfig - configure dynamic linker run-time bindings"
5202 msgstr ""
5203
5204 #. type: Plain text
5205 #: build/C/man8/ldconfig.8:40
5206 msgid ""
5207 "B</sbin/ldconfig> [ B<-nNvXV> ] [ B<-f\\ conf> ] [ B<-C\\ cache> ] [ B<-r\\ "
5208 "root> ] I<directory>\\ ..."
5209 msgstr ""
5210
5211 #. type: Plain text
5212 #: build/C/man8/ldconfig.8:49
5213 msgid "B</sbin/ldconfig> B<-l> [ B<-v> ] I<library>\\ ..."
5214 msgstr ""
5215
5216 #. type: Plain text
5217 #: build/C/man8/ldconfig.8:54
5218 msgid "B</sbin/ldconfig> B<-p>"
5219 msgstr ""
5220
5221 #. type: Plain text
5222 #: build/C/man8/ldconfig.8:71
5223 msgid ""
5224 "B<ldconfig> creates the necessary links and cache to the most recent shared "
5225 "libraries found in the directories specified on the command line, in the "
5226 "file I</etc/ld.so.conf>, and in the trusted directories (I</lib> and "
5227 "I</usr/lib>).  The cache is used by the run-time linker, I<ld.so> or "
5228 "I<ld-linux.so>.  B<ldconfig> checks the header and filenames of the "
5229 "libraries it encounters when determining which versions should have their "
5230 "links updated."
5231 msgstr ""
5232
5233 #.  The following sentence looks suspect
5234 #.  (perhaps historical cruft) -- MTK, Jul 2005
5235 #.  Therefore, when making dynamic libraries,
5236 #.  it is wise to explicitly link against libc (use \-lc).
5237 #. type: Plain text
5238 #: build/C/man8/ldconfig.8:79
5239 msgid ""
5240 "B<ldconfig> will attempt to deduce the type of ELF libs (i.e., libc5 or "
5241 "libc6/glibc)  based on what C libs, if any, the library was linked against."
5242 msgstr ""
5243
5244 #. type: Plain text
5245 #: build/C/man8/ldconfig.8:100
5246 msgid ""
5247 "Some existing libs do not contain enough information to allow the deduction "
5248 "of their type.  Therefore, the I</etc/ld.so.conf> file format allows the "
5249 "specification of an expected type.  This is I<only> used for those ELF libs "
5250 "which we can not work out.  The format is \"dirname=TYPE\", where TYPE can "
5251 "be libc4, libc5, or libc6.  (This syntax also works on the command line.)  "
5252 "Spaces are I<not> allowed.  Also see the B<-p> option.  B<ldconfig> should "
5253 "normally be run by the superuser as it may require write permission on some "
5254 "root owned directories and files."
5255 msgstr ""
5256
5257 #. type: TP
5258 #: build/C/man8/ldconfig.8:101
5259 #, no-wrap
5260 msgid "B<-v>"
5261 msgstr ""
5262
5263 #. type: Plain text
5264 #: build/C/man8/ldconfig.8:107
5265 msgid ""
5266 "Verbose mode.  Print current version number, the name of each directory as "
5267 "it is scanned, and any links that are created.  Overrides quiet mode."
5268 msgstr ""
5269
5270 #. type: TP
5271 #: build/C/man8/ldconfig.8:107
5272 #, no-wrap
5273 msgid "B<-n>"
5274 msgstr ""
5275
5276 #. type: Plain text
5277 #: build/C/man8/ldconfig.8:118
5278 msgid ""
5279 "Only process directories specified on the command line.  Don't process the "
5280 "trusted directories (I</lib> and I</usr/lib>)  nor those specified in "
5281 "I</etc/ld.so.conf>.  Implies B<-N>."
5282 msgstr ""
5283
5284 #. type: TP
5285 #: build/C/man8/ldconfig.8:118
5286 #, no-wrap
5287 msgid "B<-N>"
5288 msgstr ""
5289
5290 #. type: Plain text
5291 #: build/C/man8/ldconfig.8:124
5292 msgid ""
5293 "Don't rebuild the cache.  Unless B<-X> is also specified, links are still "
5294 "updated."
5295 msgstr ""
5296
5297 #. type: TP
5298 #: build/C/man8/ldconfig.8:124
5299 #, no-wrap
5300 msgid "B<-X>"
5301 msgstr ""
5302
5303 #. type: Plain text
5304 #: build/C/man8/ldconfig.8:130
5305 msgid ""
5306 "Don't update links.  Unless B<-N> is also specified, the cache is still "
5307 "rebuilt."
5308 msgstr ""
5309
5310 #. type: TP
5311 #: build/C/man8/ldconfig.8:130
5312 #, no-wrap
5313 msgid "B<-f conf>"
5314 msgstr ""
5315
5316 #. type: Plain text
5317 #: build/C/man8/ldconfig.8:136
5318 msgid "Use B<conf> instead of I</etc/ld.so.conf>."
5319 msgstr ""
5320
5321 #. type: TP
5322 #: build/C/man8/ldconfig.8:136
5323 #, no-wrap
5324 msgid "B<-C cache>"
5325 msgstr ""
5326
5327 #. type: Plain text
5328 #: build/C/man8/ldconfig.8:142
5329 msgid "Use B<cache> instead of I</etc/ld.so.cache>."
5330 msgstr ""
5331
5332 #. type: TP
5333 #: build/C/man8/ldconfig.8:142
5334 #, no-wrap
5335 msgid "B<-r root>"
5336 msgstr ""
5337
5338 #. type: Plain text
5339 #: build/C/man8/ldconfig.8:147
5340 msgid "Change to and use I<root> as the root directory."
5341 msgstr ""
5342
5343 #. type: TP
5344 #: build/C/man8/ldconfig.8:147
5345 #, no-wrap
5346 msgid "B<-l>"
5347 msgstr ""
5348
5349 #. type: Plain text
5350 #: build/C/man8/ldconfig.8:152
5351 msgid ""
5352 "Library mode.  Manually link individual libraries.  Intended for use by "
5353 "experts only."
5354 msgstr ""
5355
5356 #. type: TP
5357 #: build/C/man8/ldconfig.8:152
5358 #, no-wrap
5359 msgid "B<-p>"
5360 msgstr ""
5361
5362 #. type: Plain text
5363 #: build/C/man8/ldconfig.8:156
5364 msgid ""
5365 "Print the lists of directories and candidate libraries stored in the current "
5366 "cache."
5367 msgstr ""
5368
5369 #. type: Plain text
5370 #: build/C/man8/ldconfig.8:161
5371 msgid "run-time linker/loader"
5372 msgstr ""
5373
5374 #. type: TP
5375 #: build/C/man8/ldconfig.8:161
5376 #, no-wrap
5377 msgid "I</etc/ld.so.conf>"
5378 msgstr ""
5379
5380 #. type: Plain text
5381 #: build/C/man8/ldconfig.8:165
5382 msgid ""
5383 "File containing a list of colon, space, tab, newline, or comma-separated "
5384 "directories in which to search for libraries."
5385 msgstr ""
5386
5387 #. type: Plain text
5388 #: build/C/man8/ldconfig.8:174
5389 msgid ""
5390 "File containing an ordered list of libraries found in the directories "
5391 "specified in I</etc/ld.so.conf>, as well as those found in I</lib> and "
5392 "I</usr/lib>."
5393 msgstr ""
5394
5395 #. type: Plain text
5396 #: build/C/man8/ldconfig.8:178
5397 msgid "B<ldd>(1), B<ld.so>(8)"
5398 msgstr ""
5399
5400 #. type: TH
5401 #: build/C/man1/ldd.1:10
5402 #, no-wrap
5403 msgid "LDD"
5404 msgstr ""
5405
5406 #. type: TH
5407 #: build/C/man1/ldd.1:10
5408 #, no-wrap
5409 msgid "2000-10-30"
5410 msgstr ""
5411
5412 #. type: Plain text
5413 #: build/C/man1/ldd.1:13
5414 msgid "ldd - print shared library dependencies"
5415 msgstr ""
5416
5417 #. type: Plain text
5418 #: build/C/man1/ldd.1:15
5419 msgid "B<ldd> [OPTION]... FILE..."
5420 msgstr ""
5421
5422 #. type: Plain text
5423 #: build/C/man1/ldd.1:19
5424 msgid ""
5425 "B<ldd> prints the shared libraries required by each program or shared "
5426 "library specified on the command line."
5427 msgstr ""
5428
5429 #. type: TP
5430 #: build/C/man1/ldd.1:20
5431 #, no-wrap
5432 msgid "B<--version>"
5433 msgstr ""
5434
5435 #. type: Plain text
5436 #: build/C/man1/ldd.1:24
5437 msgid "Print the version number of B<ldd>."
5438 msgstr ""
5439
5440 #. type: TP
5441 #: build/C/man1/ldd.1:24
5442 #, no-wrap
5443 msgid "B<-v\\ --verbose>"
5444 msgstr ""
5445
5446 #. type: Plain text
5447 #: build/C/man1/ldd.1:28
5448 msgid ""
5449 "Print all information, including, for example, symbol versioning "
5450 "information."
5451 msgstr ""
5452
5453 #. type: TP
5454 #: build/C/man1/ldd.1:28
5455 #, no-wrap
5456 msgid "B<-u\\ --unused>"
5457 msgstr ""
5458
5459 #. type: Plain text
5460 #: build/C/man1/ldd.1:32
5461 msgid "Print unused direct dependencies.  (Since glibc 2.3.4.)"
5462 msgstr ""
5463
5464 #. type: TP
5465 #: build/C/man1/ldd.1:32
5466 #, no-wrap
5467 msgid "B<-d\\ --data-relocs>"
5468 msgstr ""
5469
5470 #. type: Plain text
5471 #: build/C/man1/ldd.1:35
5472 msgid "Perform relocations and report any missing objects (ELF only)."
5473 msgstr ""
5474
5475 #. type: TP
5476 #: build/C/man1/ldd.1:35
5477 #, no-wrap
5478 msgid "B<-r\\ --function-relocs>"
5479 msgstr ""
5480
5481 #. type: Plain text
5482 #: build/C/man1/ldd.1:39
5483 msgid ""
5484 "Perform relocations for both data objects and functions, and report any "
5485 "missing objects or functions (ELF only)."
5486 msgstr ""
5487
5488 #. type: TP
5489 #: build/C/man1/ldd.1:39
5490 #, no-wrap
5491 msgid "B<--help>"
5492 msgstr ""
5493
5494 #. type: Plain text
5495 #: build/C/man1/ldd.1:42
5496 msgid "Usage information."
5497 msgstr ""
5498
5499 #. type: Plain text
5500 #: build/C/man1/ldd.1:53
5501 msgid ""
5502 "The standard version of B<ldd> comes with glibc2.  Libc5 came with an older "
5503 "version, still present on some systems.  The long options are not supported "
5504 "by the libc5 version.  On the other hand, the glibc2 version does not "
5505 "support B<-V> and only has the equivalent B<--version>."
5506 msgstr ""
5507
5508 #. type: Plain text
5509 #: build/C/man1/ldd.1:59
5510 msgid ""
5511 "The libc5 version of this program will use the name of a library given on "
5512 "the command line as-is when it contains a \\(aq/\\(aq; otherwise it searches "
5513 "for the library in the standard locations.  To run it on a shared library in "
5514 "the current directory, prefix the name with \"./\"."
5515 msgstr ""
5516
5517 #. type: Plain text
5518 #: build/C/man1/ldd.1:62
5519 msgid "B<ldd> does not work on a.out shared libraries."
5520 msgstr ""
5521
5522 #.  .SH AUTHOR
5523 #.  David Engel.
5524 #.  Roland McGrath and Ulrich Drepper.
5525 #. type: Plain text
5526 #: build/C/man1/ldd.1:75
5527 msgid ""
5528 "B<ldd> does not work with some extremely old a.out programs which were built "
5529 "before B<ldd> support was added to the compiler releases.  If you use B<ldd> "
5530 "on one of these programs, the program will attempt to run with I<argc> = 0 "
5531 "and the results will be unpredictable."
5532 msgstr ""
5533
5534 #. type: Plain text
5535 #: build/C/man1/ldd.1:78
5536 msgid "B<ld.so>(8), B<ldconfig>(8)"
5537 msgstr ""
5538
5539 #. type: TH
5540 #: build/C/man7/rtld-audit.7:26
5541 #, no-wrap
5542 msgid "RTLD-AUDIT"
5543 msgstr ""
5544
5545 #. type: TH
5546 #: build/C/man7/rtld-audit.7:26
5547 #, no-wrap
5548 msgid "2010-09-10"
5549 msgstr ""
5550
5551 #. type: Plain text
5552 #: build/C/man7/rtld-audit.7:29
5553 msgid "rtld-audit - auditing API for the dynamic linker"
5554 msgstr ""
5555
5556 #. type: Plain text
5557 #: build/C/man7/rtld-audit.7:31
5558 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
5559 msgstr ""
5560
5561 #. type: Plain text
5562 #: build/C/man7/rtld-audit.7:33
5563 msgid "B<#include E<lt>link.hE<gt>>"
5564 msgstr ""
5565
5566 #. type: Plain text
5567 #: build/C/man7/rtld-audit.7:41
5568 msgid ""
5569 "The GNU dynamic linker (run-time linker)  provides an auditing API that "
5570 "allows an application to be notified when various dynamic linking events "
5571 "occur.  This API is very similar to the auditing interface provided by the "
5572 "Solaris run-time linker.  The necessary constants and prototypes are defined "
5573 "by including I<E<lt>link.hE<gt>>."
5574 msgstr ""
5575
5576 #. type: Plain text
5577 #: build/C/man7/rtld-audit.7:48
5578 msgid ""
5579 "To use this interface, the programmer creates a shared library that "
5580 "implements a standard set of function names.  Not all of the functions need "
5581 "to be implemented: in most cases, if the programmer is not interested in a "
5582 "particular class of auditing event, then no implementation needs to be "
5583 "provided for the corresponding auditing function."
5584 msgstr ""
5585
5586 #. type: Plain text
5587 #: build/C/man7/rtld-audit.7:56
5588 msgid ""
5589 "To employ the auditing interface, the environment variable B<LD_AUDIT> must "
5590 "be defined to contain a colon-separated list of shared libraries, each of "
5591 "which can implement (parts of) the auditing API.  When an auditable event "
5592 "occurs, the corresponding function is invoked in each library, in the order "
5593 "that the libraries are listed."
5594 msgstr ""
5595
5596 #. type: SS
5597 #: build/C/man7/rtld-audit.7:56
5598 #, no-wrap
5599 msgid "la_version()"
5600 msgstr ""
5601
5602 #. type: Plain text
5603 #: build/C/man7/rtld-audit.7:60
5604 #, no-wrap
5605 msgid "B<unsigned int la_version(unsigned int >I<version>B<);>\n"
5606 msgstr ""
5607
5608 #. type: Plain text
5609 #: build/C/man7/rtld-audit.7:72
5610 msgid ""
5611 "This is the only function that I<must> be defined by an auditing library: it "
5612 "performs the initial handshake between the dynamic linker and the auditing "
5613 "library.  When invoking this function, the dynamic linker passes, in "
5614 "I<version>, the highest version of the auditing interface that the linker "
5615 "supports.  If necessary, the auditing library can check that this version is "
5616 "sufficient for its requirements."
5617 msgstr ""
5618
5619 #. type: Plain text
5620 #: build/C/man7/rtld-audit.7:81
5621 msgid ""
5622 "As its function result, this function should return the version of the "
5623 "auditing interface that this auditing library expects to use (returning "
5624 "I<version> is acceptable).  If the returned value is 0, or a version that is "
5625 "greater than that supported by the dynamic linker, then the audit library is "
5626 "ignored."
5627 msgstr ""
5628
5629 #. type: SS
5630 #: build/C/man7/rtld-audit.7:81
5631 #, no-wrap
5632 msgid "la_objsearch()"
5633 msgstr ""
5634
5635 #. type: Plain text
5636 #: build/C/man7/rtld-audit.7:86
5637 #, no-wrap
5638 msgid ""
5639 "B<char *la_objsearch(const char *>I<name>B<, uintptr_t *>I<cookie>B<,>\n"
5640 "B<                   unsigned int >I<flag>B<);>\n"
5641 msgstr ""
5642
5643 #. type: Plain text
5644 #: build/C/man7/rtld-audit.7:97
5645 msgid ""
5646 "The dynamic linker invokes this function to inform the auditing library that "
5647 "it is about to search for a shared object.  The I<name> argument is the "
5648 "filename or pathname that is to be searched for.  I<cookie> identifies the "
5649 "shared object that initiated the search.  I<flag> is set to one of the "
5650 "following values:"
5651 msgstr ""
5652
5653 #. type: TP
5654 #: build/C/man7/rtld-audit.7:97
5655 #, no-wrap
5656 msgid "B<LA_SER_ORIG>"
5657 msgstr ""
5658
5659 #. type: Plain text
5660 #: build/C/man7/rtld-audit.7:106
5661 msgid ""
5662 "This is the original name that is being searched for.  Typically, this name "
5663 "comes from an ELF B<DT_NEEDED> entry, or is the I<filename> argument given "
5664 "to B<dlopen>(3)."
5665 msgstr ""
5666
5667 #. type: TP
5668 #: build/C/man7/rtld-audit.7:106
5669 #, no-wrap
5670 msgid "B<LA_SER_LIBPATH>"
5671 msgstr ""
5672
5673 #. type: Plain text
5674 #: build/C/man7/rtld-audit.7:111
5675 msgid "I<name> was created using a directory specified in B<LD_LIBRARY_PATH>."
5676 msgstr ""
5677
5678 #. type: TP
5679 #: build/C/man7/rtld-audit.7:111
5680 #, no-wrap
5681 msgid "B<LA_SER_RUNPATH>"
5682 msgstr ""
5683
5684 #. type: Plain text
5685 #: build/C/man7/rtld-audit.7:119
5686 msgid ""
5687 "I<name> was created using a directory specified in an ELF B<DT_RPATH> or "
5688 "B<DT_RUNPATH> list."
5689 msgstr ""
5690
5691 #. type: TP
5692 #: build/C/man7/rtld-audit.7:119
5693 #, no-wrap
5694 msgid "B<LA_SER_CONFIG>"
5695 msgstr ""
5696
5697 #. type: Plain text
5698 #: build/C/man7/rtld-audit.7:126
5699 msgid "I<name> was found via the B<ldconfig>(8)  cache (I</etc/ld.so.cache>)."
5700 msgstr ""
5701
5702 #. type: TP
5703 #: build/C/man7/rtld-audit.7:126
5704 #, no-wrap
5705 msgid "B<LA_SER_DEFAULT>"
5706 msgstr ""
5707
5708 #. type: Plain text
5709 #: build/C/man7/rtld-audit.7:130
5710 msgid "I<name> was found via a search of one of the default directories."
5711 msgstr ""
5712
5713 #. type: TP
5714 #: build/C/man7/rtld-audit.7:130
5715 #, no-wrap
5716 msgid "B<LA_SER_SECURE>"
5717 msgstr ""
5718
5719 #. type: Plain text
5720 #: build/C/man7/rtld-audit.7:134
5721 msgid "I<name> is specific to a secure object (unused on Linux)."
5722 msgstr ""
5723
5724 #. type: Plain text
5725 #: build/C/man7/rtld-audit.7:143
5726 msgid ""
5727 "As its function result, B<la_objsearch>()  returns the pathname that the "
5728 "dynamic linker should use for further processing.  If NULL is returned, then "
5729 "this pathname is ignored for further processing.  If this audit library "
5730 "simply intends to monitor search paths, then I<name> should be returned."
5731 msgstr ""
5732
5733 #. type: SS
5734 #: build/C/man7/rtld-audit.7:143
5735 #, no-wrap
5736 msgid "la_activity()"
5737 msgstr ""
5738
5739 #. type: Plain text
5740 #: build/C/man7/rtld-audit.7:147
5741 #, no-wrap
5742 msgid "B<void la_activity( uintptr_t *>I<cookie>B<, unsigned int >I<flag>B<);>\n"
5743 msgstr ""
5744
5745 #. type: Plain text
5746 #: build/C/man7/rtld-audit.7:156
5747 msgid ""
5748 "The dynamic linker calls this function to inform the auditing library that "
5749 "link-map activity is occurring.  I<cookie> identifies the object at the head "
5750 "of the link map.  When the dynamic linker invokes this function, I<flag> is "
5751 "set to one of the following values:"
5752 msgstr ""
5753
5754 #. type: TP
5755 #: build/C/man7/rtld-audit.7:156
5756 #, no-wrap
5757 msgid "B<LA_ACT_ADD>"
5758 msgstr ""
5759
5760 #. type: Plain text
5761 #: build/C/man7/rtld-audit.7:159
5762 msgid "New objects are being added to the link map."
5763 msgstr ""
5764
5765 #. type: TP
5766 #: build/C/man7/rtld-audit.7:159
5767 #, no-wrap
5768 msgid "B<LA_ACT_DELETE>"
5769 msgstr ""
5770
5771 #. type: Plain text
5772 #: build/C/man7/rtld-audit.7:162
5773 msgid "Objects are being removed from the link map."
5774 msgstr ""
5775
5776 #. type: TP
5777 #: build/C/man7/rtld-audit.7:162
5778 #, no-wrap
5779 msgid "B<LA_ACT_CONSISTENT>"
5780 msgstr ""
5781
5782 #. type: Plain text
5783 #: build/C/man7/rtld-audit.7:165
5784 msgid "Link-map activity has been completed: the map is once again consistent."
5785 msgstr ""
5786
5787 #. type: SS
5788 #: build/C/man7/rtld-audit.7:165
5789 #, no-wrap
5790 msgid "la_objopen()"
5791 msgstr ""
5792
5793 #. type: Plain text
5794 #: build/C/man7/rtld-audit.7:170
5795 #, no-wrap
5796 msgid ""
5797 "B<unsigned int la_objopen(struct link_map *>I<map>B<, Lmid_t >I<lmid>B<,>\n"
5798 "B<                        uintptr_t *>I<cookie>B<);>\n"
5799 msgstr ""
5800
5801 #. type: Plain text
5802 #: build/C/man7/rtld-audit.7:179
5803 msgid ""
5804 "The dynamic linker calls this function when a new shared object is loaded.  "
5805 "The I<map> argument is a pointer to a link-map structure that describes the "
5806 "object.  The I<lmid> field has one of the following values"
5807 msgstr ""
5808
5809 #. type: TP
5810 #: build/C/man7/rtld-audit.7:179
5811 #, no-wrap
5812 msgid "B<LM_ID_BASE>"
5813 msgstr ""
5814
5815 #. type: Plain text
5816 #: build/C/man7/rtld-audit.7:182
5817 msgid "Link map is part of the initial namespace."
5818 msgstr ""
5819
5820 #. type: TP
5821 #: build/C/man7/rtld-audit.7:182
5822 #, no-wrap
5823 msgid "B<LM_ID_NEWLM>"
5824 msgstr ""
5825
5826 #. type: Plain text
5827 #: build/C/man7/rtld-audit.7:186
5828 msgid "Link map is part of a new namespace requested via B<dlmopen>(3)."
5829 msgstr ""
5830
5831 #. type: Plain text
5832 #: build/C/man7/rtld-audit.7:194
5833 msgid ""
5834 "I<cookie> is a pointer to an identifier for this object.  The identifier is "
5835 "provided to later calls to functions in the auditing library in order to "
5836 "identify this object.  This identifier is initialized to point to object's "
5837 "link map, but the audit library can change the identifier to some other "
5838 "value that it may prefer to use to identify the object."
5839 msgstr ""
5840
5841 #. type: Plain text
5842 #: build/C/man7/rtld-audit.7:201
5843 msgid ""
5844 "As its return value, B<la_objopen>()  returns a bit mask created by ORing "
5845 "zero or more of the following constants, which allow the auditing library to "
5846 "select the objects to be monitored by B<la_symbind*>():"
5847 msgstr ""
5848
5849 #. type: TP
5850 #: build/C/man7/rtld-audit.7:201
5851 #, no-wrap
5852 msgid "B<LA_FLG_BINDTO>"
5853 msgstr ""
5854
5855 #. type: Plain text
5856 #: build/C/man7/rtld-audit.7:204
5857 msgid "Audit symbol bindings to this object."
5858 msgstr ""
5859
5860 #. type: TP
5861 #: build/C/man7/rtld-audit.7:204
5862 #, no-wrap
5863 msgid "B<LA_FLG_BINDFROM>"
5864 msgstr ""
5865
5866 #. type: Plain text
5867 #: build/C/man7/rtld-audit.7:207
5868 msgid "Audit symbol bindings from this object."
5869 msgstr ""
5870
5871 #. type: Plain text
5872 #: build/C/man7/rtld-audit.7:211
5873 msgid ""
5874 "A return value of 0 from B<la_objopen>()  indicates that no symbol bindings "
5875 "should be audited for this object."
5876 msgstr ""
5877
5878 #. type: SS
5879 #: build/C/man7/rtld-audit.7:211
5880 #, no-wrap
5881 msgid "la_objclose()"
5882 msgstr ""
5883
5884 #. type: Plain text
5885 #: build/C/man7/rtld-audit.7:215
5886 #, no-wrap
5887 msgid "B<unsigned int la_objclose(uintptr_t *>I<cookie);>\n"
5888 msgstr ""
5889
5890 #. type: Plain text
5891 #: build/C/man7/rtld-audit.7:224
5892 msgid ""
5893 "The dynamic linker invokes this function after any finalization code for the "
5894 "object has been executed, before the object is unloaded.  The I<cookie> "
5895 "argument is the identifier obtained from a previous invocation of "
5896 "B<la_objopen>()."
5897 msgstr ""
5898
5899 #. type: Plain text
5900 #: build/C/man7/rtld-audit.7:228
5901 msgid ""
5902 "In the current implementation, the value returned by B<la_objclose>()  is "
5903 "ignored."
5904 msgstr ""
5905
5906 #. type: SS
5907 #: build/C/man7/rtld-audit.7:228
5908 #, no-wrap
5909 msgid "la_preinit()"
5910 msgstr ""
5911
5912 #. type: Plain text
5913 #: build/C/man7/rtld-audit.7:232
5914 #, no-wrap
5915 msgid "B<void la_preinit(uintptr_t *>I<cookie>B<);>\n"
5916 msgstr ""
5917
5918 #. type: Plain text
5919 #: build/C/man7/rtld-audit.7:242
5920 msgid ""
5921 "The dynamic linker invokes this function after all shared objects have been "
5922 "loaded, before control is passed to the application (i.e., before calling "
5923 "I<main>()).  Note that I<main>()  may still later dynamically load objects "
5924 "using B<dlopen>(3)."
5925 msgstr ""
5926
5927 #. type: SS
5928 #: build/C/man7/rtld-audit.7:242
5929 #, no-wrap
5930 msgid "la_symbind*()"
5931 msgstr ""
5932
5933 #. type: Plain text
5934 #: build/C/man7/rtld-audit.7:251
5935 #, no-wrap
5936 msgid ""
5937 "B<uintptr_t la_symbind32(Elf32_Sym *>I<sym>B<, unsigned int >I<ndx>B<,>\n"
5938 "B<                       uintptr_t *>I<refcook>B<, uintptr_t "
5939 "*>I<defcook>B<,>\n"
5940 "B<                       unsigned int *>I<flags>B<, const char "
5941 "*>I<symname>B<);>\n"
5942 "B<uintptr_t la_symbind64(Elf64_Sym *>I<sym>B<, unsigned int >I<ndx>B<,>\n"
5943 "B<                       uintptr_t *>I<refcook>B<, uintptr_t "
5944 "*>I<defcook>B<,>\n"
5945 "B<                       unsigned int *>I<flags>B<, const char "
5946 "*>I<symname>B<);>\n"
5947 msgstr ""
5948
5949 #. type: Plain text
5950 #: build/C/man7/rtld-audit.7:263
5951 msgid ""
5952 "The dynamic linker invokes one of these functions when a symbol binding "
5953 "occurs between two shared objects that have been marked for auditing "
5954 "notification by B<la_objopen>().  The B<la_symbind32>()  function is "
5955 "employed on 32-bit platforms; the B<la_symbind64>()  function is employed on "
5956 "64-bit platforms."
5957 msgstr ""
5958
5959 #. type: Plain text
5960 #: build/C/man7/rtld-audit.7:273
5961 msgid ""
5962 "The I<sym> argument is a pointer to a structure that provides information "
5963 "about the symbol being bound.  The structure definition is shown in "
5964 "I<E<lt>elf.hE<gt>>.  Among the fields of this structure, I<st_value> "
5965 "indicates the address to which the symbol is bound."
5966 msgstr ""
5967
5968 #. type: Plain text
5969 #: build/C/man7/rtld-audit.7:278
5970 msgid ""
5971 "The I<ndx> argument gives the index of the symbol in the symbol table of the "
5972 "bound shared object."
5973 msgstr ""
5974
5975 #. type: Plain text
5976 #: build/C/man7/rtld-audit.7:293
5977 msgid ""
5978 "The I<refcook> argument identifies the shared object that is making the "
5979 "symbol reference; this is the same identifier that is provided to the "
5980 "B<la_objopen>()  function that returned B<LA_FLG_BINDFROM>.  The I<defcook> "
5981 "argument identifies the shared object that defines the referenced symbol; "
5982 "this is the same identifier that is provided to the B<la_objopen>()  "
5983 "function that returned B<LA_FLG_BINDTO>."
5984 msgstr ""
5985
5986 #. type: Plain text
5987 #: build/C/man7/rtld-audit.7:297
5988 msgid "The I<symname> argument points a string containing the name of the symbol."
5989 msgstr ""
5990
5991 #.  LA_SYMB_STRUCTCALL appears to be unused
5992 #. type: Plain text
5993 #: build/C/man7/rtld-audit.7:305
5994 msgid ""
5995 "The I<flags> argument is a bit mask that both provides information about the "
5996 "symbol and can be used to modify further auditing of this PLT (Procedure "
5997 "Linkage Table) entry.  The dynamic linker may supply the following bit "
5998 "values in this argument:"
5999 msgstr ""
6000
6001 #. type: TP
6002 #: build/C/man7/rtld-audit.7:305
6003 #, no-wrap
6004 msgid "B<LA_SYMB_DLSYM>"
6005 msgstr ""
6006
6007 #. type: Plain text
6008 #: build/C/man7/rtld-audit.7:309
6009 msgid "The binding resulted from a call to B<dlsym>(3)."
6010 msgstr ""
6011
6012 #. type: TP
6013 #: build/C/man7/rtld-audit.7:309
6014 #, no-wrap
6015 msgid "B<LA_SYMB_ALTVALUE>"
6016 msgstr ""
6017
6018 #. type: Plain text
6019 #: build/C/man7/rtld-audit.7:314
6020 msgid ""
6021 "A previous B<la_symbind*>()  call returned an alternate value for this "
6022 "symbol."
6023 msgstr ""
6024
6025 #.  pltenter/pltexit are called for non-dynamically loaded libraries,
6026 #.  but don't seem to be called for dynamically loaded libs?
6027 #.  Is this the same on Solaris?
6028 #. type: Plain text
6029 #: build/C/man7/rtld-audit.7:328
6030 msgid ""
6031 "By default, if the auditing library implements B<la_pltenter>()  and "
6032 "B<la_pltexit>()  functions (see below), then these functions are invoked, "
6033 "after B<la_symbind>(), for PLT entries, each time the symbol is referenced.  "
6034 "The following flags can be ORed into I<*flags> to change this default "
6035 "behavior:"
6036 msgstr ""
6037
6038 #. type: TP
6039 #: build/C/man7/rtld-audit.7:328
6040 #, no-wrap
6041 msgid "B<LA_SYMB_NOPLTENTER>"
6042 msgstr ""
6043
6044 #. type: Plain text
6045 #: build/C/man7/rtld-audit.7:333
6046 msgid "Don't call B<la_pltenter>()  for this symbol."
6047 msgstr ""
6048
6049 #. type: TP
6050 #: build/C/man7/rtld-audit.7:333
6051 #, no-wrap
6052 msgid "B<LA_SYMB_NOPLTEXIT>"
6053 msgstr ""
6054
6055 #. type: Plain text
6056 #: build/C/man7/rtld-audit.7:338
6057 msgid "Don't call B<la_pltexit>()  for this symbol."
6058 msgstr ""
6059
6060 #. type: Plain text
6061 #: build/C/man7/rtld-audit.7:349
6062 msgid ""
6063 "The return value of B<la_symbind32>()  and B<la_symbind64>()  is the address "
6064 "to which control should be passed after the function returns.  If the "
6065 "auditing library is simply monitoring symbol bindings, then it should return "
6066 "I<sym-E<gt>st_name>.  A different value may be returned if the library "
6067 "wishes to direct control to an alternate location."
6068 msgstr ""
6069
6070 #. type: SS
6071 #: build/C/man7/rtld-audit.7:349
6072 #, no-wrap
6073 msgid "la_pltenter()"
6074 msgstr ""
6075
6076 #. type: Plain text
6077 #: build/C/man7/rtld-audit.7:355 build/C/man7/rtld-audit.7:415
6078 msgid ""
6079 "The precise name and argument types for this function depend on the hardware "
6080 "platform.  (The appropriate definition is supplied by I<E<lt>link.hE<gt>>.)  "
6081 "Here is the definition for x86-32:"
6082 msgstr ""
6083
6084 #. type: Plain text
6085 #: build/C/man7/rtld-audit.7:361
6086 #, no-wrap
6087 msgid ""
6088 "B<Elf32_Addr la_i86_gnu_pltenter(Elf32_Sym *>I<sym>B<, unsigned int "
6089 ">I<ndx>B<,>\n"
6090 "B<                 uintptr_t *>I<refcook>B<, uintptr_t *>I<defcook>B<,>\n"
6091 "B<                 La_i86_regs *>I<regs>B<, unsigned int *>I<flags>B<,>\n"
6092 "B<                 const char *>I<symname>B<, long int "
6093 "*>I<framesizep>B<);>\n"
6094 msgstr ""
6095
6096 #. type: Plain text
6097 #: build/C/man7/rtld-audit.7:365
6098 msgid ""
6099 "This function is invoked just before a PLT entry is called, between two "
6100 "shared objects that have been marked for binding notification."
6101 msgstr ""
6102
6103 #. type: Plain text
6104 #: build/C/man7/rtld-audit.7:375 build/C/man7/rtld-audit.7:438
6105 msgid ""
6106 "The I<sym>, I<ndx>, I<refcook>, I<defcook>, and I<symname> are as for "
6107 "B<la_symbind*>()."
6108 msgstr ""
6109
6110 #. type: Plain text
6111 #: build/C/man7/rtld-audit.7:382
6112 msgid ""
6113 "The I<regs> argument points to a structure (defined in I<E<lt>link.hE<gt>>)  "
6114 "containing the values of registers to be used for the call to this PLT "
6115 "entry."
6116 msgstr ""
6117
6118 #. type: Plain text
6119 #: build/C/man7/rtld-audit.7:388
6120 msgid ""
6121 "The I<flags> argument points to a bit mask that conveys information about, "
6122 "and can be used to modify subsequent auditing of, this PLT entry, as for "
6123 "B<la_symbind*>()."
6124 msgstr ""
6125
6126 #.  FIXME is the following correct?
6127 #. type: Plain text
6128 #: build/C/man7/rtld-audit.7:404
6129 msgid ""
6130 "The I<framesizep> argument points to a I<long\\ int> buffer that can be used "
6131 "to explicitly set the frame size used for the call to this PLT entry.  If "
6132 "different B<la_pltenter>()  invocations for this symbol return different "
6133 "values, then the maximum returned value is used.  The B<la_pltenter>()  "
6134 "function is only called if this buffer is explicitly set to a suitable "
6135 "value."
6136 msgstr ""
6137
6138 #. type: Plain text
6139 #: build/C/man7/rtld-audit.7:409
6140 msgid "The return value of B<la_pltenter>()  is as for B<la_symbind*>()."
6141 msgstr ""
6142
6143 #. type: SS
6144 #: build/C/man7/rtld-audit.7:409
6145 #, no-wrap
6146 msgid "la_pltexit()"
6147 msgstr ""
6148
6149 #. type: Plain text
6150 #: build/C/man7/rtld-audit.7:421
6151 #, no-wrap
6152 msgid ""
6153 "B<unsigned int la_i86_gnu_pltexit(Elf32_Sym *>I<sym>B<, unsigned int "
6154 ">I<ndx>B<,>\n"
6155 "B<                 uintptr_t *>I<refcook>B<, uintptr_t *>I<defcook>B<,>\n"
6156 "B<                 const La_i86_regs *>I<inregs>B<, La_i86_retval "
6157 "*>I<outregs>B<,>\n"
6158 "B<                 const char *>I<symname>B<);>\n"
6159 msgstr ""
6160
6161 #. type: Plain text
6162 #: build/C/man7/rtld-audit.7:428
6163 msgid ""
6164 "This function is called when a PLT entry, made between two shared objects "
6165 "that have been marked for binding notification, returns.  The function is "
6166 "called just before control returns to the caller of the PLT entry."
6167 msgstr ""
6168
6169 #. type: Plain text
6170 #: build/C/man7/rtld-audit.7:451
6171 msgid ""
6172 "The I<inregs> argument points to a structure (defined in "
6173 "I<E<lt>link.hE<gt>>)  containing the values of registers used for the call "
6174 "to this PLT entry.  The I<outregs> argument points to a structure (defined "
6175 "in I<E<lt>link.hE<gt>>)  containing return values for the call to this PLT "
6176 "entry.  These values can be modified by the caller, and the changes will be "
6177 "visible to the caller of the PLT entry."
6178 msgstr ""
6179
6180 #.  This differs from Solaris, where an audit library that monitors
6181 #.  symbol binding should return the value of the 'retval' argument
6182 #.  (not provided by GNU, but equivalent to returning outregs->lrv_eax
6183 #.  on (say) x86-32).
6184 #. type: Plain text
6185 #: build/C/man7/rtld-audit.7:459
6186 msgid ""
6187 "In the current GNU implementation, the return value of B<la_pltexit>()  is "
6188 "ignored."
6189 msgstr ""
6190
6191 #. type: Plain text
6192 #: build/C/man7/rtld-audit.7:465
6193 msgid ""
6194 "This API is nonstandard, but very similar to the Solaris API, described in "
6195 "the Solaris I<Linker and Libraries Guide>, in the chapter I<Runtime Linker "
6196 "Auditing Interface>."
6197 msgstr ""
6198
6199 #. type: Plain text
6200 #: build/C/man7/rtld-audit.7:468
6201 msgid "Note the following differences from the Solaris dynamic linker auditing API:"
6202 msgstr ""
6203
6204 #. type: IP
6205 #: build/C/man7/rtld-audit.7:468 build/C/man7/rtld-audit.7:472 build/C/man7/rtld-audit.7:480
6206 #, no-wrap
6207 msgid "*"
6208 msgstr ""
6209
6210 #. type: Plain text
6211 #: build/C/man7/rtld-audit.7:472
6212 msgid ""
6213 "The Solaris B<la_objfilter>()  interface is not supported by the GNU "
6214 "implementation."
6215 msgstr ""
6216
6217 #. type: Plain text
6218 #: build/C/man7/rtld-audit.7:480
6219 msgid ""
6220 "The Solaris B<la_symbind32>()  and B<la_pltexit>()  functions do not provide "
6221 "a I<symname> argument."
6222 msgstr ""
6223
6224 #. type: Plain text
6225 #: build/C/man7/rtld-audit.7:490
6226 msgid ""
6227 "The Solaris B<la_pltexit>()  function does not provide I<inregs> and "
6228 "I<outregs> arguments (but does provide a I<retval> argument with the "
6229 "function return value)."
6230 msgstr ""
6231
6232 #. type: Plain text
6233 #: build/C/man7/rtld-audit.7:494
6234 #, no-wrap
6235 msgid ""
6236 "#include E<lt>link.hE<gt>\n"
6237 "#include E<lt>stdio.hE<gt>\n"
6238 msgstr ""
6239
6240 #. type: Plain text
6241 #: build/C/man7/rtld-audit.7:499
6242 #, no-wrap
6243 msgid ""
6244 "unsigned int\n"
6245 "la_version(unsigned int version)\n"
6246 "{\n"
6247 "    printf(\"la_version(): %d\\en\", version);\n"
6248 msgstr ""
6249
6250 #. type: Plain text
6251 #: build/C/man7/rtld-audit.7:502
6252 #, no-wrap
6253 msgid ""
6254 "    return version;\n"
6255 "}\n"
6256 msgstr ""
6257
6258 #. type: Plain text
6259 #: build/C/man7/rtld-audit.7:515
6260 #, no-wrap
6261 msgid ""
6262 "char *\n"
6263 "la_objsearch(const char *name, uintptr_t *cookie, unsigned int flag)\n"
6264 "{\n"
6265 "    printf(\"la_objsearch(): name = %s; cookie = %x\", name, cookie);\n"
6266 "    printf(\"; flag = %s\\en\",\n"
6267 "            (flag == LA_SER_ORIG) ?    \"LA_SER_ORIG\" :\n"
6268 "            (flag == LA_SER_LIBPATH) ? \"LA_SER_LIBPATH\" :\n"
6269 "            (flag == LA_SER_RUNPATH) ? \"LA_SER_RUNPATH\" :\n"
6270 "            (flag == LA_SER_DEFAULT) ? \"LA_SER_DEFAULT\" :\n"
6271 "            (flag == LA_SER_CONFIG) ?  \"LA_SER_CONFIG\" :\n"
6272 "            (flag == LA_SER_SECURE) ?  \"LA_SER_SECURE\" :\n"
6273 "            \"???\");\n"
6274 msgstr ""
6275
6276 #. type: Plain text
6277 #: build/C/man7/rtld-audit.7:518
6278 #, no-wrap
6279 msgid ""
6280 "    return name;\n"
6281 "}\n"
6282 msgstr ""
6283
6284 #. type: Plain text
6285 #: build/C/man7/rtld-audit.7:528
6286 #, no-wrap
6287 msgid ""
6288 "void\n"
6289 "la_activity (uintptr_t *cookie, unsigned int flag)\n"
6290 "{\n"
6291 "    printf(\"la_activity(): cookie = %x; flag = %s\\en\", cookie,\n"
6292 "            (flag == LA_ACT_CONSISTENT) ? \"LA_ACT_CONSISTENT\" :\n"
6293 "            (flag == LA_ACT_ADD) ?        \"LA_ACT_ADD\" :\n"
6294 "            (flag == LA_ACT_DELETE) ?     \"LA_ACT_DELETE\" :\n"
6295 "            \"???\");\n"
6296 "}\n"
6297 msgstr ""
6298
6299 #. type: Plain text
6300 #: build/C/man7/rtld-audit.7:538
6301 #, no-wrap
6302 msgid ""
6303 "unsigned int\n"
6304 "la_objopen(struct link_map *map, Lmid_t lmid, uintptr_t *cookie)\n"
6305 "{\n"
6306 "    printf(\"la_objopen(): loading \\e\"%s\\e\"; lmid = %s; "
6307 "cookie=%x\\en\",\n"
6308 "            map-E<gt>l_name,\n"
6309 "            (lmid == LM_ID_BASE) ?  \"LM_ID_BASE\" :\n"
6310 "            (lmid == LM_ID_NEWLM) ? \"LM_ID_NEWLM\" :\n"
6311 "            \"???\",\n"
6312 "            cookie);\n"
6313 msgstr ""
6314
6315 #. type: Plain text
6316 #: build/C/man7/rtld-audit.7:541
6317 #, no-wrap
6318 msgid ""
6319 "    return LA_FLG_BINDTO | LA_FLG_BINDFROM;\n"
6320 "}\n"
6321 msgstr ""
6322
6323 #. type: Plain text
6324 #: build/C/man7/rtld-audit.7:546
6325 #, no-wrap
6326 msgid ""
6327 "unsigned int\n"
6328 "la_objclose (uintptr_t *cookie)\n"
6329 "{\n"
6330 "    printf(\"la_objclose(): %x\\en\", cookie);\n"
6331 msgstr ""
6332
6333 #. type: Plain text
6334 #: build/C/man7/rtld-audit.7:549
6335 #, no-wrap
6336 msgid ""
6337 "    return 0;\n"
6338 "}\n"
6339 msgstr ""
6340
6341 #. type: Plain text
6342 #: build/C/man7/rtld-audit.7:555
6343 #, no-wrap
6344 msgid ""
6345 "void\n"
6346 "la_preinit(uintptr_t *cookie)\n"
6347 "{\n"
6348 "    printf(\"la_preinit(): %x\\en\", cookie);\n"
6349 "}\n"
6350 msgstr ""
6351
6352 #. type: Plain text
6353 #: build/C/man7/rtld-audit.7:564
6354 #, no-wrap
6355 msgid ""
6356 "uintptr_t\n"
6357 "la_symbind32(Elf32_Sym *sym, unsigned int ndx, uintptr_t *refcook,\n"
6358 "        uintptr_t *defcook, unsigned int *flags, const char *symname)\n"
6359 "{\n"
6360 "    printf(\"la_symbind32(): symname = %s; sym-E<gt>st_value = %p\\en\",\n"
6361 "            symname, sym-E<gt>st_value);\n"
6362 "    printf(\"        ndx = %d; flags = 0x%x\", ndx, *flags);\n"
6363 "    printf(\"; refcook = %x; defcook = %x\\en\", refcook, defcook);\n"
6364 msgstr ""
6365
6366 #. type: Plain text
6367 #: build/C/man7/rtld-audit.7:567 build/C/man7/rtld-audit.7:579 build/C/man7/rtld-audit.7:589
6368 #, no-wrap
6369 msgid ""
6370 "    return sym-E<gt>st_value;\n"
6371 "}\n"
6372 msgstr ""
6373
6374 #. type: Plain text
6375 #: build/C/man7/rtld-audit.7:576
6376 #, no-wrap
6377 msgid ""
6378 "uintptr_t\n"
6379 "la_symbind64(Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,\n"
6380 "        uintptr_t *defcook, unsigned int *flags, const char *symname)\n"
6381 "{\n"
6382 "    printf(\"la_symbind64(): symname = %s; sym-E<gt>st_value = %p\\en\",\n"
6383 "            symname, sym-E<gt>st_value);\n"
6384 "    printf(\"        ndx = %d; flags = 0x%x\", ndx, *flags);\n"
6385 "    printf(\"; refcook = %x; defcook = %x\\en\", refcook, defcook);\n"
6386 msgstr ""
6387
6388 #. type: Plain text
6389 #: build/C/man7/rtld-audit.7:586
6390 #, no-wrap
6391 msgid ""
6392 "Elf32_Addr\n"
6393 "la_i86_gnu_pltenter(Elf32_Sym *sym, unsigned int ndx,\n"
6394 "        uintptr_t *refcook, uintptr_t *defcook, La_i86_regs *regs,\n"
6395 "        unsigned int *flags, const char *symname, long int *framesizep)\n"
6396 "{\n"
6397 "    printf(\"la_i86_gnu_pltenter(): %s (%p)\\en\", symname, "
6398 "sym-E<gt>st_value);\n"
6399 msgstr ""
6400
6401 #.  FIXME Specifying multiple audit libraries doesn't work on GNU.
6402 #.  My simple tests on Solaris work okay, but not on Linux -- mtk, Jan 2009
6403 #.  glibc bug filed: http://sourceware.org/bugzilla/show_bug.cgi?id=9733
6404 #.  Reportedly, this is fixed on 16 Mar 2009 (i.e., for glibc 2.10)
6405 #. type: Plain text
6406 #: build/C/man7/rtld-audit.7:600
6407 msgid ""
6408 "In glibc versions up to and include 2.9, specifying more than one audit "
6409 "library in B<LD_AUDIT> results in a run-time crash.  This is reportedly "
6410 "fixed in glibc 2.10."
6411 msgstr ""
6412
6413 #. type: Plain text
6414 #: build/C/man7/rtld-audit.7:605
6415 msgid "B<ldd>(1), B<dlopen>(3), B<ld.so>(8), B<ldconfig>(8)"
6416 msgstr ""