OSDN Git Service

bdc61e8d4871a5db54e5bd6123265ca1075b8224
[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: 2015-01-23 22:24+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=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #. type: TH
20 #: build/C/man3/dl_iterate_phdr.3:25
21 #, no-wrap
22 msgid "DL_ITERATE_PHDR"
23 msgstr ""
24
25 #. type: TH
26 #: build/C/man3/dl_iterate_phdr.3:25
27 #, no-wrap
28 msgid "2007-05-18"
29 msgstr ""
30
31 #. type: TH
32 #: build/C/man3/dl_iterate_phdr.3:25 build/C/man3/end.3:26 build/C/man8/ld.so.8:5 build/C/man8/ldconfig.8:22 build/C/man1/memusage.1:24 build/C/man1/memusagestat.1:23 build/C/man1/mtrace.1:23 build/C/man1/pldd.1:25 build/C/man8/sln.8:25
33 #, no-wrap
34 msgid "GNU"
35 msgstr ""
36
37 #. type: TH
38 #: build/C/man3/dl_iterate_phdr.3:25 build/C/man3/dlopen.3:35 build/C/man5/elf.5:35 build/C/man3/end.3:26 build/C/man8/ld.so.8:5 build/C/man8/ldconfig.8:22 build/C/man1/ldd.1:14 build/C/man7/rtld-audit.7:28 build/C/man8/sln.8:25
39 #, no-wrap
40 msgid "Linux Programmer's Manual"
41 msgstr ""
42
43 #. type: SH
44 #: build/C/man3/dl_iterate_phdr.3:26 build/C/man3/dlopen.3:36 build/C/man5/elf.5:36 build/C/man3/end.3:27 build/C/man8/ld.so.8:6 build/C/man8/ldconfig.8:23 build/C/man1/ldd.1:15 build/C/man1/memusage.1:25 build/C/man1/memusagestat.1:24 build/C/man1/mtrace.1:24 build/C/man1/pldd.1:26 build/C/man7/rtld-audit.7:29 build/C/man8/sln.8:26 build/C/man1/sprof.1:26
45 #, no-wrap
46 msgid "NAME"
47 msgstr ""
48
49 #. type: Plain text
50 #: build/C/man3/dl_iterate_phdr.3:28
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:28 build/C/man3/dlopen.3:39 build/C/man5/elf.5:38 build/C/man3/end.3:29 build/C/man8/ld.so.8:8 build/C/man8/ldconfig.8:25 build/C/man1/ldd.1:17 build/C/man1/memusage.1:27 build/C/man1/memusagestat.1:26 build/C/man1/mtrace.1:26 build/C/man1/pldd.1:28 build/C/man7/rtld-audit.7:31 build/C/man8/sln.8:28 build/C/man1/sprof.1:28
56 #, no-wrap
57 msgid "SYNOPSIS"
58 msgstr ""
59
60 #. type: Plain text
61 #: build/C/man3/dl_iterate_phdr.3:32
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 (*>I<callback>B<) (struct dl_phdr_info *>I<info>B<,>\n"
74 "B<                           size_t >I<size>B<, void *>I<data>B<),>\n"
75 "B<          void *>I<data>B<);>\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:43 build/C/man3/end.3:35 build/C/man8/ld.so.8:18 build/C/man8/ldconfig.8:54 build/C/man1/ldd.1:19 build/C/man1/memusage.1:29 build/C/man1/memusagestat.1:28 build/C/man1/mtrace.1:28 build/C/man1/pldd.1:33 build/C/man7/rtld-audit.7:35 build/C/man8/sln.8:32 build/C/man1/sprof.1: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 build/C/man1/pldd.1:50
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:50 build/C/man1/pldd.1:53 build/C/man7/rtld-audit.7:461 build/C/man1/sprof.1:75
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:76 build/C/man1/memusage.1:201 build/C/man1/memusagestat.1:81 build/C/man1/pldd.1:71 build/C/man7/rtld-audit.7:502 build/C/man1/sprof.1:79
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:107
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:521 build/C/man5/elf.5:1939 build/C/man3/end.3:108 build/C/man8/ld.so.8:489 build/C/man8/ldconfig.8:175 build/C/man1/ldd.1:108 build/C/man1/memusage.1:271 build/C/man1/memusagestat.1:88 build/C/man1/mtrace.1:61 build/C/man1/pldd.1:91 build/C/man7/rtld-audit.7:602 build/C/man8/sln.8:60 build/C/man1/sprof.1:299
307 #, no-wrap
308 msgid "SEE ALSO"
309 msgstr ""
310
311 #. type: Plain text
312 #: build/C/man3/dl_iterate_phdr.3:202
313 msgid ""
314 "B<ldd>(1), B<objdump>(1), B<readelf>(1), B<dlopen>(3), B<elf>(5), "
315 "B<ld.so>(8)"
316 msgstr ""
317
318 #. type: Plain text
319 #: build/C/man3/dl_iterate_phdr.3:205
320 msgid ""
321 "I<Executable and Linking Format Specification>, available at various "
322 "locations online."
323 msgstr ""
324
325 #. type: SH
326 #: build/C/man3/dl_iterate_phdr.3:205 build/C/man3/dlopen.3:531 build/C/man5/elf.5:1963 build/C/man3/end.3:113 build/C/man8/ld.so.8:505 build/C/man8/ldconfig.8:178 build/C/man1/ldd.1:113 build/C/man1/memusage.1:275 build/C/man1/memusagestat.1:91 build/C/man1/mtrace.1:64 build/C/man1/pldd.1:96 build/C/man7/rtld-audit.7:607 build/C/man8/sln.8:64 build/C/man1/sprof.1:303
327 #, no-wrap
328 msgid "COLOPHON"
329 msgstr ""
330
331 #. type: Plain text
332 #: build/C/man3/dl_iterate_phdr.3:213 build/C/man3/dlopen.3:539 build/C/man5/elf.5:1971 build/C/man3/end.3:121 build/C/man8/ld.so.8:513 build/C/man8/ldconfig.8:186 build/C/man1/ldd.1:121 build/C/man1/memusage.1:283 build/C/man1/memusagestat.1:99 build/C/man1/mtrace.1:72 build/C/man1/pldd.1:104 build/C/man7/rtld-audit.7:615 build/C/man8/sln.8:72 build/C/man1/sprof.1:311
333 msgid ""
334 "This page is part of release 3.78 of the Linux I<man-pages> project.  A "
335 "description of the project, information about reporting bugs, and the latest "
336 "version of this page, can be found at "
337 "\\%http://www.kernel.org/doc/man-pages/."
338 msgstr ""
339
340 #. type: TH
341 #: build/C/man3/dlopen.3:35
342 #, no-wrap
343 msgid "DLOPEN"
344 msgstr ""
345
346 #. type: TH
347 #: build/C/man3/dlopen.3:35 build/C/man1/ldd.1:14
348 #, no-wrap
349 msgid "2014-10-02"
350 msgstr ""
351
352 #. type: TH
353 #: build/C/man3/dlopen.3:35 build/C/man5/elf.5:35 build/C/man7/rtld-audit.7:28 build/C/man1/sprof.1:25
354 #, no-wrap
355 msgid "Linux"
356 msgstr ""
357
358 #. type: Plain text
359 #: build/C/man3/dlopen.3:39
360 msgid ""
361 "dladdr, dlclose, dlerror, dlopen, dlsym, dlvsym - programming interface to "
362 "dynamic linking loader"
363 msgstr ""
364
365 #. type: Plain text
366 #: build/C/man3/dlopen.3:41
367 msgid "B<#include E<lt>dlfcn.hE<gt>>"
368 msgstr ""
369
370 #. type: Plain text
371 #: build/C/man3/dlopen.3:43
372 msgid "B<void *dlopen(const char *>I<filename>B<, int >I<flag>B<);>"
373 msgstr ""
374
375 #. type: Plain text
376 #: build/C/man3/dlopen.3:45
377 msgid "B<char *dlerror(void);>"
378 msgstr ""
379
380 #. type: Plain text
381 #: build/C/man3/dlopen.3:47
382 msgid "B<void *dlsym(void *>I<handle>B<, const char *>I<symbol>B<);>"
383 msgstr ""
384
385 #. type: Plain text
386 #: build/C/man3/dlopen.3:49
387 msgid "B<int dlclose(void *>I<handle>B<);>"
388 msgstr ""
389
390 #. type: Plain text
391 #: build/C/man3/dlopen.3:51
392 msgid "Link with I<-ldl>."
393 msgstr ""
394
395 #. type: Plain text
396 #: build/C/man3/dlopen.3:58
397 msgid ""
398 "The four functions B<dlopen>(), B<dlsym>(), B<dlclose>(), B<dlerror>()  "
399 "implement the interface to the dynamic linking loader."
400 msgstr ""
401
402 #. type: SS
403 #: build/C/man3/dlopen.3:58
404 #, no-wrap
405 msgid "dlerror()"
406 msgstr ""
407
408 #. type: Plain text
409 #: build/C/man3/dlopen.3:71
410 msgid ""
411 "The function B<dlerror>()  returns a human-readable string describing the "
412 "most recent error that occurred from B<dlopen>(), B<dlsym>()  or "
413 "B<dlclose>()  since the last call to B<dlerror>().  It returns NULL if no "
414 "errors have occurred since initialization or since it was last called."
415 msgstr ""
416
417 #. type: SS
418 #: build/C/man3/dlopen.3:71
419 #, no-wrap
420 msgid "dlopen()"
421 msgstr ""
422
423 #. type: Plain text
424 #: build/C/man3/dlopen.3:89
425 msgid ""
426 "The function B<dlopen>()  loads the dynamic library file named by the "
427 "null-terminated string I<filename> and returns an opaque \"handle\" for the "
428 "dynamic library.  If I<filename> is NULL, then the returned handle is for "
429 "the main program.  If I<filename> contains a slash (\"/\"), then it is "
430 "interpreted as a (relative or absolute) pathname.  Otherwise, the dynamic "
431 "linker searches for the library as follows (see B<ld.so>(8)  for further "
432 "details):"
433 msgstr ""
434
435 #. type: IP
436 #: 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:56 build/C/man8/ld.so.8:61 build/C/man8/ld.so.8:66 build/C/man8/ld.so.8:70 build/C/man8/ld.so.8:80
437 #, no-wrap
438 msgid "o"
439 msgstr ""
440
441 #. type: Plain text
442 #: build/C/man3/dlopen.3:93
443 msgid ""
444 "(ELF only) If the executable file for the calling program contains a "
445 "DT_RPATH tag, and does not contain a DT_RUNPATH tag, then the directories "
446 "listed in the DT_RPATH tag are searched."
447 msgstr ""
448
449 #. type: Plain text
450 #: build/C/man3/dlopen.3:100
451 msgid ""
452 "If, at the time that the program was started, the environment variable "
453 "B<LD_LIBRARY_PATH> was defined to contain a colon-separated list of "
454 "directories, then these are searched.  (As a security measure this variable "
455 "is ignored for set-user-ID and set-group-ID programs.)"
456 msgstr ""
457
458 #. type: Plain text
459 #: build/C/man3/dlopen.3:104
460 msgid ""
461 "(ELF only) If the executable file for the calling program contains a "
462 "DT_RUNPATH tag, then the directories listed in that tag are searched."
463 msgstr ""
464
465 #. type: Plain text
466 #: build/C/man3/dlopen.3:111
467 msgid ""
468 "The cache file I</etc/ld.so.cache> (maintained by B<ldconfig>(8))  is "
469 "checked to see whether it contains an entry for I<filename>."
470 msgstr ""
471
472 #. type: Plain text
473 #: build/C/man3/dlopen.3:117
474 msgid "The directories I</lib> and I</usr/lib> are searched (in that order)."
475 msgstr ""
476
477 #. type: Plain text
478 #: build/C/man3/dlopen.3:123
479 msgid ""
480 "If the library has dependencies on other shared libraries, then these are "
481 "also automatically loaded by the dynamic linker using the same rules.  (This "
482 "process may occur recursively, if those libraries in turn have dependencies, "
483 "and so on.)"
484 msgstr ""
485
486 #. type: Plain text
487 #: build/C/man3/dlopen.3:126
488 msgid "One of the following two values must be included in I<flag>:"
489 msgstr ""
490
491 #. type: TP
492 #: build/C/man3/dlopen.3:126
493 #, no-wrap
494 msgid "B<RTLD_LAZY>"
495 msgstr ""
496
497 #. type: Plain text
498 #: build/C/man3/dlopen.3:134
499 msgid ""
500 "Perform lazy binding.  Only resolve symbols as the code that references them "
501 "is executed.  If the symbol is never referenced, then it is never resolved.  "
502 "(Lazy binding is performed only for function references; references to "
503 "variables are always immediately bound when the library is loaded.)"
504 msgstr ""
505
506 #. type: TP
507 #: build/C/man3/dlopen.3:134
508 #, no-wrap
509 msgid "B<RTLD_NOW>"
510 msgstr ""
511
512 #. type: Plain text
513 #: build/C/man3/dlopen.3:143
514 msgid ""
515 "If this value is specified, or the environment variable B<LD_BIND_NOW> is "
516 "set to a nonempty string, all undefined symbols in the library are resolved "
517 "before B<dlopen>()  returns.  If this cannot be done, an error is returned."
518 msgstr ""
519
520 #. type: Plain text
521 #: build/C/man3/dlopen.3:146
522 msgid "Zero or more of the following values may also be ORed in I<flag>:"
523 msgstr ""
524
525 #. type: TP
526 #: build/C/man3/dlopen.3:146
527 #, no-wrap
528 msgid "B<RTLD_GLOBAL>"
529 msgstr ""
530
531 #. type: Plain text
532 #: build/C/man3/dlopen.3:150
533 msgid ""
534 "The symbols defined by this library will be made available for symbol "
535 "resolution of subsequently loaded libraries."
536 msgstr ""
537
538 #. type: TP
539 #: build/C/man3/dlopen.3:150
540 #, no-wrap
541 msgid "B<RTLD_LOCAL>"
542 msgstr ""
543
544 #. type: Plain text
545 #: build/C/man3/dlopen.3:157
546 msgid ""
547 "This is the converse of B<RTLD_GLOBAL>, and the default if neither flag is "
548 "specified.  Symbols defined in this library are not made available to "
549 "resolve references in subsequently loaded libraries."
550 msgstr ""
551
552 #. type: TP
553 #: build/C/man3/dlopen.3:157
554 #, no-wrap
555 msgid "B<RTLD_NODELETE> (since glibc 2.2)"
556 msgstr ""
557
558 #.  (But it is present on Solaris.)
559 #. type: Plain text
560 #: build/C/man3/dlopen.3:167
561 msgid ""
562 "Do not unload the library during B<dlclose>().  Consequently, the library's "
563 "static variables are not reinitialized if the library is reloaded with "
564 "B<dlopen>()  at a later time.  This flag is not specified in POSIX.1-2001."
565 msgstr ""
566
567 #. type: TP
568 #: build/C/man3/dlopen.3:167
569 #, no-wrap
570 msgid "B<RTLD_NOLOAD> (since glibc 2.2)"
571 msgstr ""
572
573 #.  (But it is present on Solaris.)
574 #. type: Plain text
575 #: build/C/man3/dlopen.3:182
576 msgid ""
577 "Don't load the library.  This can be used to test if the library is already "
578 "resident (B<dlopen>()  returns NULL if it is not, or the library's handle if "
579 "it is resident).  This flag can also be used to promote the flags on a "
580 "library that is already loaded.  For example, a library that was previously "
581 "loaded with B<RTLD_LOCAL> can be reopened with B<RTLD_NOLOAD\\ |\\ "
582 "RTLD_GLOBAL>.  This flag is not specified in POSIX.1-2001."
583 msgstr ""
584
585 #. type: TP
586 #: build/C/man3/dlopen.3:182
587 #, no-wrap
588 msgid "B<RTLD_DEEPBIND> (since glibc 2.3.4)"
589 msgstr ""
590
591 #.  Inimitably described by UD in
592 #.  http://sources.redhat.com/ml/libc-hacker/2004-09/msg00083.html.
593 #. type: Plain text
594 #: build/C/man3/dlopen.3:192
595 msgid ""
596 "Place the lookup scope of the symbols in this library ahead of the global "
597 "scope.  This means that a self-contained library will use its own symbols in "
598 "preference to global symbols with the same name contained in libraries that "
599 "have already been loaded.  This flag is not specified in POSIX.1-2001."
600 msgstr ""
601
602 #. type: Plain text
603 #: build/C/man3/dlopen.3:204
604 msgid ""
605 "If I<filename> is NULL, then the returned handle is for the main program.  "
606 "When given to B<dlsym>(), this handle causes a search for a symbol in the "
607 "main program, followed by all shared libraries loaded at program startup, "
608 "and then all shared libraries loaded by B<dlopen>()  with the flag "
609 "B<RTLD_GLOBAL>."
610 msgstr ""
611
612 #. type: Plain text
613 #: build/C/man3/dlopen.3:214
614 msgid ""
615 "External references in the library are resolved using the libraries in that "
616 "library's dependency list and any other libraries previously opened with the "
617 "B<RTLD_GLOBAL> flag.  If the executable was linked with the flag "
618 "\"-rdynamic\" (or, synonymously, \"--export-dynamic\"), then the global "
619 "symbols in the executable will also be used to resolve references in a "
620 "dynamically loaded library."
621 msgstr ""
622
623 #. type: Plain text
624 #: build/C/man3/dlopen.3:232
625 msgid ""
626 "If the same library is loaded again with B<dlopen>(), the same library "
627 "handle is returned.  The dl library maintains reference counts for library "
628 "handles, so a dynamic library is not deallocated until B<dlclose>()  has "
629 "been called on it as many times as B<dlopen>()  has succeeded on it.  The "
630 "B<_init>()  routine, if present, is called only once.  But a subsequent call "
631 "with B<RTLD_NOW> may force symbol resolution for a library earlier loaded "
632 "with B<RTLD_LAZY>."
633 msgstr ""
634
635 #. type: Plain text
636 #: build/C/man3/dlopen.3:236
637 msgid "If B<dlopen>()  fails for any reason, it returns NULL."
638 msgstr ""
639
640 #. type: SS
641 #: build/C/man3/dlopen.3:236
642 #, no-wrap
643 msgid "dlsym()"
644 msgstr ""
645
646 #. type: Plain text
647 #: build/C/man3/dlopen.3:265
648 msgid ""
649 "The function B<dlsym>()  takes a \"handle\" of a dynamic library returned by "
650 "B<dlopen>()  and the null-terminated symbol name, returning the address "
651 "where that symbol is loaded into memory.  If the symbol is not found, in the "
652 "specified library or any of the libraries that were automatically loaded by "
653 "B<dlopen>()  when that library was loaded, B<dlsym>()  returns NULL.  (The "
654 "search performed by B<dlsym>()  is breadth first through the dependency tree "
655 "of these libraries.)  Since the value of the symbol could actually be NULL "
656 "(so that a NULL return from B<dlsym>()  need not indicate an error), the "
657 "correct way to test for an error is to call B<dlerror>()  to clear any old "
658 "error conditions, then call B<dlsym>(), and then call B<dlerror>()  again, "
659 "saving its return value into a variable, and check whether this saved value "
660 "is not NULL."
661 msgstr ""
662
663 #. type: Plain text
664 #: build/C/man3/dlopen.3:277
665 msgid ""
666 "There are two special pseudo-handles, B<RTLD_DEFAULT> and B<RTLD_NEXT>.  The "
667 "former will find the first occurrence of the desired symbol using the "
668 "default library search order.  The latter will find the next occurrence of a "
669 "function in the search order after the current library.  This allows one to "
670 "provide a wrapper around a function in another shared library."
671 msgstr ""
672
673 #. type: SS
674 #: build/C/man3/dlopen.3:277
675 #, no-wrap
676 msgid "dlclose()"
677 msgstr ""
678
679 #. type: Plain text
680 #: build/C/man3/dlopen.3:284
681 msgid ""
682 "The function B<dlclose>()  decrements the reference count on the dynamic "
683 "library handle I<handle>.  If the reference count drops to zero and no other "
684 "loaded libraries use symbols in it, then the dynamic library is unloaded."
685 msgstr ""
686
687 #. type: Plain text
688 #: build/C/man3/dlopen.3:288
689 msgid "The function B<dlclose>()  returns 0 on success, and nonzero on error."
690 msgstr ""
691
692 #. type: SS
693 #: build/C/man3/dlopen.3:288
694 #, no-wrap
695 msgid "The obsolete symbols _init() and _fini()"
696 msgstr ""
697
698 #. type: Plain text
699 #: build/C/man3/dlopen.3:306
700 msgid ""
701 "The linker recognizes special symbols B<_init> and B<_fini>.  If a dynamic "
702 "library exports a routine named B<_init>(), then that code is executed after "
703 "the loading, before B<dlopen>()  returns.  If the dynamic library exports a "
704 "routine named B<_fini>(), then that routine is called just before the "
705 "library is unloaded.  In case you need to avoid linking against the system "
706 "startup files, this can be done by using the B<gcc>(1)  I<-nostartfiles> "
707 "command-line option."
708 msgstr ""
709
710 #.  void _init(void) __attribute__((constructor));
711 #.  void _fini(void) __attribute__((destructor));
712 #. type: Plain text
713 #: build/C/man3/dlopen.3:317
714 msgid ""
715 "Using these routines, or the gcc B<-nostartfiles> or B<-nostdlib> options, "
716 "is not recommended.  Their use may result in undesired behavior, since the "
717 "constructor/destructor routines will not be executed (unless special "
718 "measures are taken)."
719 msgstr ""
720
721 #. type: Plain text
722 #: build/C/man3/dlopen.3:329
723 msgid ""
724 "Instead, libraries should export routines using the "
725 "B<__attribute__((constructor))> and B<__attribute__((destructor))> function "
726 "attributes.  See the gcc info pages for information on these.  Constructor "
727 "routines are executed before B<dlopen>()  returns, and destructor routines "
728 "are executed before B<dlclose>()  returns."
729 msgstr ""
730
731 #. type: SS
732 #: build/C/man3/dlopen.3:329
733 #, no-wrap
734 msgid "Glibc extensions: dladdr() and dlvsym()"
735 msgstr ""
736
737 #. type: Plain text
738 #: build/C/man3/dlopen.3:331
739 msgid "Glibc adds two functions not described by POSIX, with prototypes"
740 msgstr ""
741
742 #. type: Plain text
743 #: build/C/man3/dlopen.3:335
744 #, no-wrap
745 msgid ""
746 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
747 "B<#include E<lt>dlfcn.hE<gt>>\n"
748 msgstr ""
749
750 #. type: Plain text
751 #: build/C/man3/dlopen.3:337
752 #, no-wrap
753 msgid "B<int dladdr(void *>I<addr>B<, Dl_info *>I<info>B<);>\n"
754 msgstr ""
755
756 #. type: Plain text
757 #: build/C/man3/dlopen.3:339
758 #, no-wrap
759 msgid ""
760 "B<void *dlvsym(void *>I<handle>B<, char *>I<symbol>B<, char "
761 "*>I<version>B<);>\n"
762 msgstr ""
763
764 #. type: Plain text
765 #: build/C/man3/dlopen.3:348
766 msgid ""
767 "The function B<dladdr>()  takes a function pointer and tries to resolve name "
768 "and file where it is located.  Information is stored in the I<Dl_info> "
769 "structure:"
770 msgstr ""
771
772 #. type: Plain text
773 #: build/C/man3/dlopen.3:361
774 #, no-wrap
775 msgid ""
776 "typedef struct {\n"
777 "    const char *dli_fname;  /* Pathname of shared object that\n"
778 "                               contains address */\n"
779 "    void       *dli_fbase;  /* Address at which shared object\n"
780 "                               is loaded */\n"
781 "    const char *dli_sname;  /* Name of symbol whose definition\n"
782 "                               overlaps I<addr> */\n"
783 "    void       *dli_saddr;  /* Exact address of symbol named\n"
784 "                               in I<dli_sname> */\n"
785 "} Dl_info;\n"
786 msgstr ""
787
788 #. type: Plain text
789 #: build/C/man3/dlopen.3:371
790 msgid ""
791 "If no symbol matching I<addr> could be found, then I<dli_sname> and "
792 "I<dli_saddr> are set to NULL."
793 msgstr ""
794
795 #. type: Plain text
796 #: build/C/man3/dlopen.3:374
797 msgid "B<dladdr>()  returns 0 on error, and nonzero on success."
798 msgstr ""
799
800 #. type: Plain text
801 #: build/C/man3/dlopen.3:381
802 msgid ""
803 "The function B<dlvsym>(), provided by glibc since version 2.1, does the same "
804 "as B<dlsym>()  but takes a version string as an additional argument."
805 msgstr ""
806
807 #. type: Plain text
808 #: build/C/man3/dlopen.3:388
809 msgid ""
810 "POSIX.1-2001 describes B<dlclose>(), B<dlerror>(), B<dlopen>(), and "
811 "B<dlsym>()."
812 msgstr ""
813
814 #. type: SH
815 #: build/C/man3/dlopen.3:388 build/C/man5/elf.5:1912 build/C/man3/end.3:53 build/C/man8/ld.so.8:483 build/C/man1/pldd.1:84 build/C/man7/rtld-audit.7:467
816 #, no-wrap
817 msgid "NOTES"
818 msgstr ""
819
820 #.  .LP
821 #.  The string returned by
822 #.  .BR dlerror ()
823 #.  should not be modified.
824 #.  Some systems give the prototype as
825 #.  .sp
826 #.  .in +5
827 #.  .B "const char *dlerror(void);"
828 #.  .in
829 #. type: Plain text
830 #: build/C/man3/dlopen.3:407
831 msgid ""
832 "The symbols B<RTLD_DEFAULT> and B<RTLD_NEXT> are defined by "
833 "I<E<lt>dlfcn.hE<gt>> only when B<_GNU_SOURCE> was defined before including "
834 "it."
835 msgstr ""
836
837 #. type: Plain text
838 #: build/C/man3/dlopen.3:412
839 msgid ""
840 "Since glibc 2.2.3, B<atexit>(3)  can be used to register an exit handler "
841 "that is automatically called when a library is unloaded."
842 msgstr ""
843
844 #. type: SS
845 #: build/C/man3/dlopen.3:412
846 #, no-wrap
847 msgid "History"
848 msgstr ""
849
850 #. type: Plain text
851 #: build/C/man3/dlopen.3:418
852 msgid ""
853 "The dlopen interface standard comes from SunOS.  That system also has "
854 "B<dladdr>(), but not B<dlvsym>()."
855 msgstr ""
856
857 #. type: SH
858 #: build/C/man3/dlopen.3:418 build/C/man1/ldd.1:91 build/C/man1/memusage.1:267 build/C/man1/memusagestat.1:84 build/C/man1/mtrace.1:58 build/C/man7/rtld-audit.7:492
859 #, no-wrap
860 msgid "BUGS"
861 msgstr ""
862
863 #. type: Plain text
864 #: build/C/man3/dlopen.3:430
865 msgid ""
866 "Sometimes, the function pointers you pass to B<dladdr>()  may surprise you.  "
867 "On some architectures (notably i386 and x86_64), I<dli_fname> and "
868 "I<dli_fbase> may end up pointing back at the object from which you called "
869 "B<dladdr>(), even if the function used as an argument should come from a "
870 "dynamically linked library."
871 msgstr ""
872
873 #. type: Plain text
874 #: build/C/man3/dlopen.3:446
875 msgid ""
876 "The problem is that the function pointer will still be resolved at compile "
877 "time, but merely point to the I<plt> (Procedure Linkage Table)  section of "
878 "the original object (which dispatches the call after asking the dynamic "
879 "linker to resolve the symbol).  To work around this, you can try to compile "
880 "the code to be position-independent: then, the compiler cannot prepare the "
881 "pointer at compile time anymore and today's B<gcc>(1)  will generate code "
882 "that just loads the final symbol address from the I<got> (Global Offset "
883 "Table) at run time before passing it to B<dladdr>()."
884 msgstr ""
885
886 #. type: Plain text
887 #: build/C/man3/dlopen.3:448
888 msgid "Load the math library, and print the cosine of 2.0:"
889 msgstr ""
890
891 #. type: Plain text
892 #: build/C/man3/dlopen.3:453
893 #, no-wrap
894 msgid ""
895 "#include E<lt>stdio.hE<gt>\n"
896 "#include E<lt>stdlib.hE<gt>\n"
897 "#include E<lt>dlfcn.hE<gt>\n"
898 msgstr ""
899
900 #. type: Plain text
901 #: build/C/man3/dlopen.3:460
902 #, no-wrap
903 msgid ""
904 "int\n"
905 "main(int argc, char **argv)\n"
906 "{\n"
907 "    void *handle;\n"
908 "    double (*cosine)(double);\n"
909 "    char *error;\n"
910 msgstr ""
911
912 #. type: Plain text
913 #: build/C/man3/dlopen.3:466
914 #, no-wrap
915 msgid ""
916 "    handle = dlopen(\"libm.so\", RTLD_LAZY);\n"
917 "    if (!handle) {\n"
918 "        fprintf(stderr, \"%s\\en\", dlerror());\n"
919 "        exit(EXIT_FAILURE);\n"
920 "    }\n"
921 msgstr ""
922
923 #. type: Plain text
924 #: build/C/man3/dlopen.3:468
925 #, no-wrap
926 msgid "    dlerror();    /* Clear any existing error */\n"
927 msgstr ""
928
929 #. type: Plain text
930 #: build/C/man3/dlopen.3:470
931 #, no-wrap
932 msgid "    cosine = (double (*)(double)) dlsym(handle, \"cos\");\n"
933 msgstr ""
934
935 #. type: Plain text
936 #: build/C/man3/dlopen.3:475
937 #, no-wrap
938 msgid ""
939 "    /* According to the ISO C standard, casting between function\n"
940 "       pointers and 'void *', as done above, produces undefined results.\n"
941 "       POSIX.1-2003 and POSIX.1-2008 accepted this state of affairs and\n"
942 "       proposed the following workaround:\n"
943 msgstr ""
944
945 #. type: Plain text
946 #: build/C/man3/dlopen.3:477
947 #, no-wrap
948 msgid "           *(void **) (&cosine) = dlsym(handle, \"cos\");\n"
949 msgstr ""
950
951 #. type: Plain text
952 #: build/C/man3/dlopen.3:480
953 #, no-wrap
954 msgid ""
955 "       This (clumsy) cast conforms with the ISO C standard and will\n"
956 "       avoid any compiler warnings.\n"
957 msgstr ""
958
959 #.  http://pubs.opengroup.org/onlinepubs/009695399/functions/dlsym.html#tag_03_112_08
960 #.  http://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html#tag_16_96_07
961 #.  http://austingroupbugs.net/view.php?id=74
962 #. type: Plain text
963 #: build/C/man3/dlopen.3:489
964 #, no-wrap
965 msgid ""
966 "       The 2013 Technical Corrigendum to POSIX.1-2008 (a.k.a.\n"
967 "       POSIX.1-2013) improved matters by requiring that conforming\n"
968 "       implementations support casting 'void *' to a function pointer.\n"
969 "       Nevertheless, some compilers (e.g., gcc with the '-pedantic'\n"
970 "       option) may complain about the cast used in this program. */\n"
971 msgstr ""
972
973 #. type: Plain text
974 #: build/C/man3/dlopen.3:495
975 #, no-wrap
976 msgid ""
977 "    error = dlerror();\n"
978 "    if (error != NULL) {\n"
979 "        fprintf(stderr, \"%s\\en\", error);\n"
980 "        exit(EXIT_FAILURE);\n"
981 "    }\n"
982 msgstr ""
983
984 #. type: Plain text
985 #: build/C/man3/dlopen.3:500
986 #, no-wrap
987 msgid ""
988 "    printf(\"%f\\en\", (*cosine)(2.0));\n"
989 "    dlclose(handle);\n"
990 "    exit(EXIT_SUCCESS);\n"
991 "}\n"
992 msgstr ""
993
994 #. type: Plain text
995 #: build/C/man3/dlopen.3:504
996 msgid ""
997 "If this program were in a file named \"foo.c\", you would build the program "
998 "with the following command:"
999 msgstr ""
1000
1001 #. type: Plain text
1002 #: build/C/man3/dlopen.3:507
1003 #, no-wrap
1004 msgid "    gcc -rdynamic -o foo foo.c -ldl\n"
1005 msgstr ""
1006
1007 #. type: Plain text
1008 #: build/C/man3/dlopen.3:517
1009 msgid ""
1010 "Libraries exporting B<_init>()  and B<_fini>()  will want to be compiled as "
1011 "follows, using I<bar.c> as the example name:"
1012 msgstr ""
1013
1014 #. type: Plain text
1015 #: build/C/man3/dlopen.3:520
1016 #, no-wrap
1017 msgid "    gcc -shared -nostartfiles -o bar bar.c\n"
1018 msgstr ""
1019
1020 #. type: Plain text
1021 #: build/C/man3/dlopen.3:529
1022 msgid ""
1023 "B<ld>(1), B<ldd>(1), B<pldd>(1), B<dl_iterate_phdr>(3), B<rtld-audit>(7), "
1024 "B<ld.so>(8), B<ldconfig>(8)"
1025 msgstr ""
1026
1027 #. type: Plain text
1028 #: build/C/man3/dlopen.3:531
1029 msgid "ld.so info pages, gcc info pages, ld info pages"
1030 msgstr ""
1031
1032 #. type: TH
1033 #: build/C/man5/elf.5:35
1034 #, no-wrap
1035 msgid "ELF"
1036 msgstr ""
1037
1038 #. type: TH
1039 #: build/C/man5/elf.5:35
1040 #, no-wrap
1041 msgid "2013-04-17"
1042 msgstr ""
1043
1044 #. type: Plain text
1045 #: build/C/man5/elf.5:38
1046 msgid "elf - format of Executable and Linking Format (ELF) files"
1047 msgstr ""
1048
1049 #.  .B #include <elf_abi.h>
1050 #. type: Plain text
1051 #: build/C/man5/elf.5:42
1052 #, no-wrap
1053 msgid "B<#include E<lt>elf.hE<gt>>\n"
1054 msgstr ""
1055
1056 #. type: Plain text
1057 #: build/C/man5/elf.5:50
1058 msgid ""
1059 "The header file I<E<lt>elf.hE<gt>> defines the format of ELF executable "
1060 "binary files.  Amongst these files are normal executable files, relocatable "
1061 "object files, core files and shared libraries."
1062 msgstr ""
1063
1064 #. type: Plain text
1065 #: build/C/man5/elf.5:59
1066 msgid ""
1067 "An executable file using the ELF file format consists of an ELF header, "
1068 "followed by a program header table or a section header table, or both.  The "
1069 "ELF header is always at offset zero of the file.  The program header table "
1070 "and the section header table's offset in the file are defined in the ELF "
1071 "header.  The two tables describe the rest of the particularities of the "
1072 "file."
1073 msgstr ""
1074
1075 #.  Applications which wish to process ELF binary files for their native
1076 #.  architecture only should include
1077 #.  .I <elf_abi.h>
1078 #.  in their source code.
1079 #.  These applications should need to refer to
1080 #.  all the types and structures by their generic names
1081 #.  "Elf_xxx"
1082 #.  and to the macros by
1083 #.  ELF_xxx".
1084 #.  Applications written this way can be compiled on any architecture,
1085 #.  regardless of whether the host is 32-bit or 64-bit.
1086 #.  .PP
1087 #.  Should an application need to process ELF files of an unknown
1088 #.  architecture, then the application needs to explicitly use either
1089 #.  "Elf32_xxx"
1090 #.  or
1091 #.  "Elf64_xxx"
1092 #.  type and structure names.
1093 #.  Likewise, the macros need to be identified by
1094 #.  "ELF32_xxx"
1095 #.  or
1096 #.  "ELF64_xxx".
1097 #.  .PP
1098 #. type: Plain text
1099 #: build/C/man5/elf.5:86
1100 msgid ""
1101 "This header file describes the above mentioned headers as C structures and "
1102 "also includes structures for dynamic sections, relocation sections and "
1103 "symbol tables."
1104 msgstr ""
1105
1106 #. type: Plain text
1107 #: build/C/man5/elf.5:98
1108 msgid ""
1109 "The following types are used for N-bit architectures (N=32,64, I<ElfN> "
1110 "stands for I<Elf32> or I<Elf64>, I<uintN_t> stands for I<uint32_t> or "
1111 "I<uint64_t>):"
1112 msgstr ""
1113
1114 #.  Elf32_Size  Unsigned object size
1115 #. type: Plain text
1116 #: build/C/man5/elf.5:112
1117 #, no-wrap
1118 msgid ""
1119 "ElfN_Addr       Unsigned program address, uintN_t\n"
1120 "ElfN_Off        Unsigned file offset, uintN_t\n"
1121 "ElfN_Section    Unsigned section index, uint16_t\n"
1122 "ElfN_Versym     Unsigned version symbol information, uint16_t\n"
1123 "Elf_Byte        unsigned char\n"
1124 "ElfN_Half       uint16_t\n"
1125 "ElfN_Sword      int32_t\n"
1126 "ElfN_Word       uint32_t\n"
1127 "ElfN_Sxword     int64_t\n"
1128 "ElfN_Xword      uint64_t\n"
1129 msgstr ""
1130
1131 #. type: Plain text
1132 #: build/C/man5/elf.5:127
1133 msgid ""
1134 "(Note: The *BSD terminology is a bit different.  There I<Elf64_Half> is "
1135 "twice as large as I<Elf32_Half>, and I<Elf64Quarter> is used for "
1136 "I<uint16_t>.  In order to avoid confusion these types are replaced by "
1137 "explicit ones in the below.)"
1138 msgstr ""
1139
1140 #. type: Plain text
1141 #: build/C/man5/elf.5:134
1142 msgid ""
1143 "All data structures that the file format defines follow the \"natural\" size "
1144 "and alignment guidelines for the relevant class.  If necessary, data "
1145 "structures contain explicit padding to ensure 4-byte alignment for 4-byte "
1146 "objects, to force structure sizes to a multiple of 4, and so on."
1147 msgstr ""
1148
1149 #. type: Plain text
1150 #: build/C/man5/elf.5:139
1151 msgid "The ELF header is described by the type I<Elf32_Ehdr> or I<Elf64_Ehdr>:"
1152 msgstr ""
1153
1154 #. type: Plain text
1155 #: build/C/man5/elf.5:143
1156 #, no-wrap
1157 msgid "#define EI_NIDENT 16\n"
1158 msgstr ""
1159
1160 #. type: Plain text
1161 #: build/C/man5/elf.5:160
1162 #, no-wrap
1163 msgid ""
1164 "typedef struct {\n"
1165 "    unsigned char e_ident[EI_NIDENT];\n"
1166 "    uint16_t      e_type;\n"
1167 "    uint16_t      e_machine;\n"
1168 "    uint32_t      e_version;\n"
1169 "    ElfN_Addr     e_entry;\n"
1170 "    ElfN_Off      e_phoff;\n"
1171 "    ElfN_Off      e_shoff;\n"
1172 "    uint32_t      e_flags;\n"
1173 "    uint16_t      e_ehsize;\n"
1174 "    uint16_t      e_phentsize;\n"
1175 "    uint16_t      e_phnum;\n"
1176 "    uint16_t      e_shentsize;\n"
1177 "    uint16_t      e_shnum;\n"
1178 "    uint16_t      e_shstrndx;\n"
1179 "} ElfN_Ehdr;\n"
1180 msgstr ""
1181
1182 #.  .Bl -tag -width "e_phentsize"
1183 #. type: Plain text
1184 #: build/C/man5/elf.5:165
1185 msgid "The fields have the following meanings:"
1186 msgstr ""
1187
1188 #. type: TP
1189 #: build/C/man5/elf.5:165
1190 #, no-wrap
1191 msgid "I<e_ident>"
1192 msgstr ""
1193
1194 #. type: Plain text
1195 #: build/C/man5/elf.5:175
1196 msgid ""
1197 "This array of bytes specifies to interpret the file, independent of the "
1198 "processor or the file's remaining contents.  Within this array everything is "
1199 "named by macros, which start with the prefix B<EI_> and may contain values "
1200 "which start with the prefix B<ELF>.  The following macros are defined:"
1201 msgstr ""
1202
1203 #. type: TP
1204 #: build/C/man5/elf.5:177
1205 #, no-wrap
1206 msgid "B<EI_MAG0>"
1207 msgstr ""
1208
1209 #. type: Plain text
1210 #: build/C/man5/elf.5:183
1211 msgid ""
1212 "The first byte of the magic number.  It must be filled with B<ELFMAG0>.  (0: "
1213 "0x7f)"
1214 msgstr ""
1215
1216 #. type: TP
1217 #: build/C/man5/elf.5:183
1218 #, no-wrap
1219 msgid "B<EI_MAG1>"
1220 msgstr ""
1221
1222 #. type: Plain text
1223 #: build/C/man5/elf.5:189
1224 msgid ""
1225 "The second byte of the magic number.  It must be filled with B<ELFMAG1>.  "
1226 "(1: \\(aqE\\(aq)"
1227 msgstr ""
1228
1229 #. type: TP
1230 #: build/C/man5/elf.5:189
1231 #, no-wrap
1232 msgid "B<EI_MAG2>"
1233 msgstr ""
1234
1235 #. type: Plain text
1236 #: build/C/man5/elf.5:195
1237 msgid ""
1238 "The third byte of the magic number.  It must be filled with B<ELFMAG2>.  (2: "
1239 "\\(aqL\\(aq)"
1240 msgstr ""
1241
1242 #. type: TP
1243 #: build/C/man5/elf.5:195
1244 #, no-wrap
1245 msgid "B<EI_MAG3>"
1246 msgstr ""
1247
1248 #. type: Plain text
1249 #: build/C/man5/elf.5:201
1250 msgid ""
1251 "The fourth byte of the magic number.  It must be filled with B<ELFMAG3>.  "
1252 "(3: \\(aqF\\(aq)"
1253 msgstr ""
1254
1255 #. type: TP
1256 #: build/C/man5/elf.5:201
1257 #, no-wrap
1258 msgid "B<EI_CLASS>"
1259 msgstr ""
1260
1261 #. type: Plain text
1262 #: build/C/man5/elf.5:204
1263 msgid "The fifth byte identifies the architecture for this binary:"
1264 msgstr ""
1265
1266 #. type: TP
1267 #: build/C/man5/elf.5:206
1268 #, no-wrap
1269 msgid "B<ELFCLASSNONE>"
1270 msgstr ""
1271
1272 #. type: Plain text
1273 #: build/C/man5/elf.5:210
1274 msgid "This class is invalid."
1275 msgstr ""
1276
1277 #. type: TP
1278 #: build/C/man5/elf.5:210
1279 #, no-wrap
1280 msgid "B<ELFCLASS32>"
1281 msgstr ""
1282
1283 #. type: Plain text
1284 #: build/C/man5/elf.5:215
1285 msgid ""
1286 "This defines the 32-bit architecture.  It supports machines with files and "
1287 "virtual address spaces up to 4 Gigabytes."
1288 msgstr ""
1289
1290 #. type: TP
1291 #: build/C/man5/elf.5:215
1292 #, no-wrap
1293 msgid "B<ELFCLASS64>"
1294 msgstr ""
1295
1296 #. type: Plain text
1297 #: build/C/man5/elf.5:218
1298 msgid "This defines the 64-bit architecture."
1299 msgstr ""
1300
1301 #. type: TP
1302 #: build/C/man5/elf.5:221
1303 #, no-wrap
1304 msgid "B<EI_DATA>"
1305 msgstr ""
1306
1307 #.  .Bl -tag -width "ELFDATA2LSB" -compact
1308 #. type: Plain text
1309 #: build/C/man5/elf.5:227
1310 msgid ""
1311 "The sixth byte specifies the data encoding of the processor-specific data in "
1312 "the file.  Currently these encodings are supported:"
1313 msgstr ""
1314
1315 #. type: TP
1316 #: build/C/man5/elf.5:228
1317 #, no-wrap
1318 msgid "B<ELFDATANONE>"
1319 msgstr ""
1320
1321 #. type: Plain text
1322 #: build/C/man5/elf.5:232
1323 msgid "Unknown data format."
1324 msgstr ""
1325
1326 #. type: TP
1327 #: build/C/man5/elf.5:232
1328 #, no-wrap
1329 msgid "B<ELFDATA2LSB>"
1330 msgstr ""
1331
1332 #. type: Plain text
1333 #: build/C/man5/elf.5:235
1334 msgid "Two's complement, little-endian."
1335 msgstr ""
1336
1337 #. type: TP
1338 #: build/C/man5/elf.5:235
1339 #, no-wrap
1340 msgid "B<ELFDATA2MSB>"
1341 msgstr ""
1342
1343 #. type: Plain text
1344 #: build/C/man5/elf.5:238
1345 msgid "Two's complement, big-endian."
1346 msgstr ""
1347
1348 #. type: TP
1349 #: build/C/man5/elf.5:241
1350 #, no-wrap
1351 msgid "B<EI_VERSION>"
1352 msgstr ""
1353
1354 #.  .Bl -tag -width "EV_CURRENT" -compact
1355 #. type: Plain text
1356 #: build/C/man5/elf.5:246
1357 msgid "The seventh byte is the version number of the ELF specification:"
1358 msgstr ""
1359
1360 #. type: TP
1361 #: build/C/man5/elf.5:247 build/C/man5/elf.5:501
1362 #, no-wrap
1363 msgid "B<EV_NONE>"
1364 msgstr ""
1365
1366 #. type: Plain text
1367 #: build/C/man5/elf.5:250 build/C/man5/elf.5:505
1368 msgid "Invalid version."
1369 msgstr ""
1370
1371 #. type: TP
1372 #: build/C/man5/elf.5:250 build/C/man5/elf.5:505
1373 #, no-wrap
1374 msgid "B<EV_CURRENT>"
1375 msgstr ""
1376
1377 #.  .El
1378 #. type: Plain text
1379 #: build/C/man5/elf.5:253 build/C/man5/elf.5:509
1380 msgid "Current version."
1381 msgstr ""
1382
1383 #. type: TP
1384 #: build/C/man5/elf.5:256
1385 #, no-wrap
1386 msgid "B<EI_OSABI>"
1387 msgstr ""
1388
1389 #.  .Bl -tag -width "ELFOSABI_STANDALONE" -compact
1390 #. type: Plain text
1391 #: build/C/man5/elf.5:265
1392 msgid ""
1393 "The eighth byte identifies the operating system and ABI to which the object "
1394 "is targeted.  Some fields in other ELF structures have flags and values that "
1395 "have platform-specific meanings; the interpretation of those fields is "
1396 "determined by the value of this byte.  For example:"
1397 msgstr ""
1398
1399 #. type: TP
1400 #: build/C/man5/elf.5:266
1401 #, no-wrap
1402 msgid "B<ELFOSABI_NONE>"
1403 msgstr ""
1404
1405 #.  0
1406 #. type: Plain text
1407 #: build/C/man5/elf.5:271
1408 msgid "Same as ELFOSABI_SYSV"
1409 msgstr ""
1410
1411 #. type: TP
1412 #: build/C/man5/elf.5:271
1413 #, no-wrap
1414 msgid "B<ELFOSABI_SYSV>"
1415 msgstr ""
1416
1417 #.  0
1418 #.  synonym: ELFOSABI_NONE
1419 #. type: Plain text
1420 #: build/C/man5/elf.5:276
1421 msgid "UNIX System V ABI."
1422 msgstr ""
1423
1424 #. type: TP
1425 #: build/C/man5/elf.5:276
1426 #, no-wrap
1427 msgid "B<ELFOSABI_HPUX>"
1428 msgstr ""
1429
1430 #.  1
1431 #. type: Plain text
1432 #: build/C/man5/elf.5:280
1433 msgid "HP-UX ABI."
1434 msgstr ""
1435
1436 #. type: TP
1437 #: build/C/man5/elf.5:280
1438 #, no-wrap
1439 msgid "B<ELFOSABI_NETBSD>"
1440 msgstr ""
1441
1442 #.  2
1443 #. type: Plain text
1444 #: build/C/man5/elf.5:284
1445 msgid "NetBSD ABI."
1446 msgstr ""
1447
1448 #. type: TP
1449 #: build/C/man5/elf.5:284
1450 #, no-wrap
1451 msgid "B<ELFOSABI_LINUX>"
1452 msgstr ""
1453
1454 #.  3
1455 #.  .TP
1456 #.  .BR ELFOSABI_HURD
1457 #.  Hurd ABI.
1458 #.  4
1459 #.  .TP
1460 #.  .BR ELFOSABI_86OPEN
1461 #.  86Open Common IA32 ABI.
1462 #.  5
1463 #. type: Plain text
1464 #: build/C/man5/elf.5:296
1465 msgid "Linux ABI."
1466 msgstr ""
1467
1468 #. type: TP
1469 #: build/C/man5/elf.5:296
1470 #, no-wrap
1471 msgid "B<ELFOSABI_SOLARIS>"
1472 msgstr ""
1473
1474 #.  6
1475 #.  .TP
1476 #.  .BR ELFOSABI_MONTEREY
1477 #.  Monterey project ABI.
1478 #.  Now replaced by
1479 #.  ELFOSABI_AIX
1480 #.  7
1481 #. type: Plain text
1482 #: build/C/man5/elf.5:306
1483 msgid "Solaris ABI."
1484 msgstr ""
1485
1486 #. type: TP
1487 #: build/C/man5/elf.5:306
1488 #, no-wrap
1489 msgid "B<ELFOSABI_IRIX>"
1490 msgstr ""
1491
1492 #.  8
1493 #. type: Plain text
1494 #: build/C/man5/elf.5:310
1495 msgid "IRIX ABI."
1496 msgstr ""
1497
1498 #. type: TP
1499 #: build/C/man5/elf.5:310
1500 #, no-wrap
1501 msgid "B<ELFOSABI_FREEBSD>"
1502 msgstr ""
1503
1504 #.  9
1505 #. type: Plain text
1506 #: build/C/man5/elf.5:314
1507 msgid "FreeBSD ABI."
1508 msgstr ""
1509
1510 #. type: TP
1511 #: build/C/man5/elf.5:314
1512 #, no-wrap
1513 msgid "B<ELFOSABI_TRU64>"
1514 msgstr ""
1515
1516 #.  10
1517 #.  ELFOSABI_MODESTO
1518 #.  11
1519 #.  ELFOSABI_OPENBSD
1520 #.  12
1521 #. type: Plain text
1522 #: build/C/man5/elf.5:322
1523 msgid "TRU64 UNIX ABI."
1524 msgstr ""
1525
1526 #. type: TP
1527 #: build/C/man5/elf.5:322
1528 #, no-wrap
1529 msgid "B<ELFOSABI_ARM>"
1530 msgstr ""
1531
1532 #.  97
1533 #. type: Plain text
1534 #: build/C/man5/elf.5:326
1535 msgid "ARM architecture ABI."
1536 msgstr ""
1537
1538 #. type: TP
1539 #: build/C/man5/elf.5:326
1540 #, no-wrap
1541 msgid "B<ELFOSABI_STANDALONE>"
1542 msgstr ""
1543
1544 #.  255
1545 #.  .El
1546 #. type: Plain text
1547 #: build/C/man5/elf.5:331
1548 msgid "Stand-alone (embedded) ABI."
1549 msgstr ""
1550
1551 #. type: TP
1552 #: build/C/man5/elf.5:333
1553 #, no-wrap
1554 msgid "B<EI_ABIVERSION>"
1555 msgstr ""
1556
1557 #. type: Plain text
1558 #: build/C/man5/elf.5:343
1559 msgid ""
1560 "The ninth byte identifies the version of the ABI to which the object is "
1561 "targeted.  This field is used to distinguish among incompatible versions of "
1562 "an ABI.  The interpretation of this version number is dependent on the ABI "
1563 "identified by the B<EI_OSABI> field.  Applications conforming to this "
1564 "specification use the value 0."
1565 msgstr ""
1566
1567 #. type: TP
1568 #: build/C/man5/elf.5:343
1569 #, no-wrap
1570 msgid "B<EI_PAD>"
1571 msgstr ""
1572
1573 #.  As reported by Yuri Kozlov and confirmed by Mike Frysinger, EI_BRAND is
1574 #.  not in GABI (http://www.sco.com/developers/gabi/latest/ch4.eheader.html)
1575 #.  It looks to be a BSDism
1576 #.  .TP
1577 #.  .BR EI_BRAND
1578 #.  Start of architecture identification.
1579 #. type: Plain text
1580 #: build/C/man5/elf.5:359
1581 msgid ""
1582 "Start of padding.  These bytes are reserved and set to zero.  Programs which "
1583 "read them should ignore them.  The value for B<EI_PAD> will change in the "
1584 "future if currently unused bytes are given meanings."
1585 msgstr ""
1586
1587 #. type: TP
1588 #: build/C/man5/elf.5:359
1589 #, no-wrap
1590 msgid "B<EI_NIDENT>"
1591 msgstr ""
1592
1593 #.  .El
1594 #. type: Plain text
1595 #: build/C/man5/elf.5:365
1596 msgid "The size of the I<e_ident> array."
1597 msgstr ""
1598
1599 #. type: TP
1600 #: build/C/man5/elf.5:366
1601 #, no-wrap
1602 msgid "I<e_type>"
1603 msgstr ""
1604
1605 #. type: Plain text
1606 #: build/C/man5/elf.5:369
1607 msgid "This member of the structure identifies the object file type:"
1608 msgstr ""
1609
1610 #. type: TP
1611 #: build/C/man5/elf.5:371
1612 #, no-wrap
1613 msgid "B<ET_NONE>"
1614 msgstr ""
1615
1616 #. type: Plain text
1617 #: build/C/man5/elf.5:375
1618 msgid "An unknown type."
1619 msgstr ""
1620
1621 #. type: TP
1622 #: build/C/man5/elf.5:375
1623 #, no-wrap
1624 msgid "B<ET_REL>"
1625 msgstr ""
1626
1627 #. type: Plain text
1628 #: build/C/man5/elf.5:378
1629 msgid "A relocatable file."
1630 msgstr ""
1631
1632 #. type: TP
1633 #: build/C/man5/elf.5:378
1634 #, no-wrap
1635 msgid "B<ET_EXEC>"
1636 msgstr ""
1637
1638 #. type: Plain text
1639 #: build/C/man5/elf.5:381
1640 msgid "An executable file."
1641 msgstr ""
1642
1643 #. type: TP
1644 #: build/C/man5/elf.5:381
1645 #, no-wrap
1646 msgid "B<ET_DYN>"
1647 msgstr ""
1648
1649 #. type: Plain text
1650 #: build/C/man5/elf.5:384
1651 msgid "A shared object."
1652 msgstr ""
1653
1654 #. type: TP
1655 #: build/C/man5/elf.5:384
1656 #, no-wrap
1657 msgid "B<ET_CORE>"
1658 msgstr ""
1659
1660 #. type: Plain text
1661 #: build/C/man5/elf.5:387
1662 msgid "A core file."
1663 msgstr ""
1664
1665 #. type: TP
1666 #: build/C/man5/elf.5:390
1667 #, no-wrap
1668 msgid "I<e_machine>"
1669 msgstr ""
1670
1671 #. type: Plain text
1672 #: build/C/man5/elf.5:394
1673 msgid ""
1674 "This member specifies the required architecture for an individual file.  For "
1675 "example:"
1676 msgstr ""
1677
1678 #. type: TP
1679 #: build/C/man5/elf.5:396
1680 #, no-wrap
1681 msgid "B<EM_NONE>"
1682 msgstr ""
1683
1684 #.  0
1685 #. type: Plain text
1686 #: build/C/man5/elf.5:401
1687 msgid "An unknown machine."
1688 msgstr ""
1689
1690 #. type: TP
1691 #: build/C/man5/elf.5:401
1692 #, no-wrap
1693 msgid "B<EM_M32>"
1694 msgstr ""
1695
1696 #.  1
1697 #. type: Plain text
1698 #: build/C/man5/elf.5:405
1699 msgid "AT&T WE 32100."
1700 msgstr ""
1701
1702 #. type: TP
1703 #: build/C/man5/elf.5:405
1704 #, no-wrap
1705 msgid "B<EM_SPARC>"
1706 msgstr ""
1707
1708 #.  2
1709 #. type: Plain text
1710 #: build/C/man5/elf.5:409
1711 msgid "Sun Microsystems SPARC."
1712 msgstr ""
1713
1714 #. type: TP
1715 #: build/C/man5/elf.5:409
1716 #, no-wrap
1717 msgid "B<EM_386>"
1718 msgstr ""
1719
1720 #.  3
1721 #. type: Plain text
1722 #: build/C/man5/elf.5:413
1723 msgid "Intel 80386."
1724 msgstr ""
1725
1726 #. type: TP
1727 #: build/C/man5/elf.5:413
1728 #, no-wrap
1729 msgid "B<EM_68K>"
1730 msgstr ""
1731
1732 #.  4
1733 #. type: Plain text
1734 #: build/C/man5/elf.5:417
1735 msgid "Motorola 68000."
1736 msgstr ""
1737
1738 #. type: TP
1739 #: build/C/man5/elf.5:417
1740 #, no-wrap
1741 msgid "B<EM_88K>"
1742 msgstr ""
1743
1744 #.  5
1745 #.  .TP
1746 #.  .BR EM_486
1747 #.  Intel 80486.
1748 #.  6
1749 #. type: Plain text
1750 #: build/C/man5/elf.5:425
1751 msgid "Motorola 88000."
1752 msgstr ""
1753
1754 #. type: TP
1755 #: build/C/man5/elf.5:425
1756 #, no-wrap
1757 msgid "B<EM_860>"
1758 msgstr ""
1759
1760 #.  7
1761 #. type: Plain text
1762 #: build/C/man5/elf.5:429
1763 msgid "Intel 80860."
1764 msgstr ""
1765
1766 #. type: TP
1767 #: build/C/man5/elf.5:429
1768 #, no-wrap
1769 msgid "B<EM_MIPS>"
1770 msgstr ""
1771
1772 #.  8
1773 #.  EM_S370
1774 #.  9
1775 #.  .TP
1776 #.  .BR EM_MIPS_RS4_BE
1777 #.  MIPS RS4000 (big-endian only). Deprecated.
1778 #.  10
1779 #.  EM_MIPS_RS3_LE (MIPS R3000 little-endian)
1780 #.  10
1781 #. type: Plain text
1782 #: build/C/man5/elf.5:441
1783 msgid "MIPS RS3000 (big-endian only)."
1784 msgstr ""
1785
1786 #. type: TP
1787 #: build/C/man5/elf.5:441
1788 #, no-wrap
1789 msgid "B<EM_PARISC>"
1790 msgstr ""
1791
1792 #.  15
1793 #. type: Plain text
1794 #: build/C/man5/elf.5:445
1795 msgid "HP/PA."
1796 msgstr ""
1797
1798 #. type: TP
1799 #: build/C/man5/elf.5:445
1800 #, no-wrap
1801 msgid "B<EM_SPARC32PLUS>"
1802 msgstr ""
1803
1804 #.  18
1805 #. type: Plain text
1806 #: build/C/man5/elf.5:449
1807 msgid "SPARC with enhanced instruction set."
1808 msgstr ""
1809
1810 #. type: TP
1811 #: build/C/man5/elf.5:449
1812 #, no-wrap
1813 msgid "B<EM_PPC>"
1814 msgstr ""
1815
1816 #.  20
1817 #. type: Plain text
1818 #: build/C/man5/elf.5:453
1819 msgid "PowerPC."
1820 msgstr ""
1821
1822 #. type: TP
1823 #: build/C/man5/elf.5:453
1824 #, no-wrap
1825 msgid "B<EM_PPC64>"
1826 msgstr ""
1827
1828 #.  21
1829 #. type: Plain text
1830 #: build/C/man5/elf.5:457
1831 msgid "PowerPC 64-bit."
1832 msgstr ""
1833
1834 #. type: TP
1835 #: build/C/man5/elf.5:457
1836 #, no-wrap
1837 msgid "B<EM_S390>"
1838 msgstr ""
1839
1840 #.  22
1841 #. type: Plain text
1842 #: build/C/man5/elf.5:461
1843 msgid "IBM S/390"
1844 msgstr ""
1845
1846 #. type: TP
1847 #: build/C/man5/elf.5:461
1848 #, no-wrap
1849 msgid "B<EM_ARM>"
1850 msgstr ""
1851
1852 #.  40
1853 #. type: Plain text
1854 #: build/C/man5/elf.5:465
1855 msgid "Advanced RISC Machines"
1856 msgstr ""
1857
1858 #. type: TP
1859 #: build/C/man5/elf.5:465
1860 #, no-wrap
1861 msgid "B<EM_SH>"
1862 msgstr ""
1863
1864 #.  42
1865 #. type: Plain text
1866 #: build/C/man5/elf.5:469
1867 msgid "Renesas SuperH"
1868 msgstr ""
1869
1870 #. type: TP
1871 #: build/C/man5/elf.5:469
1872 #, no-wrap
1873 msgid "B<EM_SPARCV9>"
1874 msgstr ""
1875
1876 #.  43
1877 #. type: Plain text
1878 #: build/C/man5/elf.5:473
1879 msgid "SPARC v9 64-bit."
1880 msgstr ""
1881
1882 #. type: TP
1883 #: build/C/man5/elf.5:473
1884 #, no-wrap
1885 msgid "B<EM_IA_64>"
1886 msgstr ""
1887
1888 #.  50
1889 #. type: Plain text
1890 #: build/C/man5/elf.5:477
1891 msgid "Intel Itanium"
1892 msgstr ""
1893
1894 #. type: TP
1895 #: build/C/man5/elf.5:477
1896 #, no-wrap
1897 msgid "B<EM_X86_64>"
1898 msgstr ""
1899
1900 #.  62
1901 #. type: Plain text
1902 #: build/C/man5/elf.5:481
1903 msgid "AMD x86-64"
1904 msgstr ""
1905
1906 #. type: TP
1907 #: build/C/man5/elf.5:481
1908 #, no-wrap
1909 msgid "B<EM_VAX>"
1910 msgstr ""
1911
1912 #.  75
1913 #.  EM_CRIS
1914 #.  76
1915 #.  .TP
1916 #.  .BR EM_ALPHA
1917 #.  Compaq [DEC] Alpha.
1918 #.  .TP
1919 #.  .BR EM_ALPHA_EXP
1920 #.  Compaq [DEC] Alpha with enhanced instruction set.
1921 #. type: Plain text
1922 #: build/C/man5/elf.5:493
1923 msgid "DEC Vax."
1924 msgstr ""
1925
1926 #. type: TP
1927 #: build/C/man5/elf.5:496
1928 #, no-wrap
1929 msgid "I<e_version>"
1930 msgstr ""
1931
1932 #.  .Bl -tag -width "EV_CURRENT" -compact
1933 #. type: Plain text
1934 #: build/C/man5/elf.5:500
1935 msgid "This member identifies the file version:"
1936 msgstr ""
1937
1938 #. type: TP
1939 #: build/C/man5/elf.5:511
1940 #, no-wrap
1941 msgid "I<e_entry>"
1942 msgstr ""
1943
1944 #. type: Plain text
1945 #: build/C/man5/elf.5:517
1946 msgid ""
1947 "This member gives the virtual address to which the system first transfers "
1948 "control, thus starting the process.  If the file has no associated entry "
1949 "point, this member holds zero."
1950 msgstr ""
1951
1952 #. type: TP
1953 #: build/C/man5/elf.5:517
1954 #, no-wrap
1955 msgid "I<e_phoff>"
1956 msgstr ""
1957
1958 #. type: Plain text
1959 #: build/C/man5/elf.5:522
1960 msgid ""
1961 "This member holds the program header table's file offset in bytes.  If the "
1962 "file has no program header table, this member holds zero."
1963 msgstr ""
1964
1965 #. type: TP
1966 #: build/C/man5/elf.5:522
1967 #, no-wrap
1968 msgid "I<e_shoff>"
1969 msgstr ""
1970
1971 #. type: Plain text
1972 #: build/C/man5/elf.5:527
1973 msgid ""
1974 "This member holds the section header table's file offset in bytes.  If the "
1975 "file has no section header table, this member holds zero."
1976 msgstr ""
1977
1978 #. type: TP
1979 #: build/C/man5/elf.5:527
1980 #, no-wrap
1981 msgid "I<e_flags>"
1982 msgstr ""
1983
1984 #. type: Plain text
1985 #: build/C/man5/elf.5:532
1986 msgid ""
1987 "This member holds processor-specific flags associated with the file.  Flag "
1988 "names take the form EF_`machine_flag'.  Currently no flags have been "
1989 "defined."
1990 msgstr ""
1991
1992 #. type: TP
1993 #: build/C/man5/elf.5:532
1994 #, no-wrap
1995 msgid "I<e_ehsize>"
1996 msgstr ""
1997
1998 #. type: Plain text
1999 #: build/C/man5/elf.5:535
2000 msgid "This member holds the ELF header's size in bytes."
2001 msgstr ""
2002
2003 #. type: TP
2004 #: build/C/man5/elf.5:535
2005 #, no-wrap
2006 msgid "I<e_phentsize>"
2007 msgstr ""
2008
2009 #. type: Plain text
2010 #: build/C/man5/elf.5:539
2011 msgid ""
2012 "This member holds the size in bytes of one entry in the file's program "
2013 "header table; all entries are the same size."
2014 msgstr ""
2015
2016 #. type: TP
2017 #: build/C/man5/elf.5:539
2018 #, no-wrap
2019 msgid "I<e_phnum>"
2020 msgstr ""
2021
2022 #. type: Plain text
2023 #: build/C/man5/elf.5:552
2024 msgid ""
2025 "This member holds the number of entries in the program header table.  Thus "
2026 "the product of I<e_phentsize> and I<e_phnum> gives the table's size in "
2027 "bytes.  If a file has no program header, I<e_phnum> holds the value zero."
2028 msgstr ""
2029
2030 #.  This is a Linux extension, added in Linux 2.6.34.
2031 #.  .Bl -tag -width "PN_XNUM"
2032 #. type: Plain text
2033 #: build/C/man5/elf.5:566
2034 msgid ""
2035 "If the number of entries in the program header table is larger than or equal "
2036 "to B<PN_XNUM> (0xffff), this member holds B<PN_XNUM> (0xffff) and the real "
2037 "number of entries in the program header table is held in the I<sh_info> "
2038 "member of the initial entry in section header table.  Otherwise, the "
2039 "I<sh_info> member of the initial entry contains the value zero."
2040 msgstr ""
2041
2042 #. type: TP
2043 #: build/C/man5/elf.5:567
2044 #, no-wrap
2045 msgid "B<PN_XNUM>"
2046 msgstr ""
2047
2048 #. type: Plain text
2049 #: build/C/man5/elf.5:572
2050 msgid ""
2051 "This is defined as 0xffff, the largest number I<e_phnum> can have, "
2052 "specifying where the actual number of program headers is assigned."
2053 msgstr ""
2054
2055 #. type: TP
2056 #: build/C/man5/elf.5:576
2057 #, no-wrap
2058 msgid "I<e_shentsize>"
2059 msgstr ""
2060
2061 #. type: Plain text
2062 #: build/C/man5/elf.5:581
2063 msgid ""
2064 "This member holds a sections header's size in bytes.  A section header is "
2065 "one entry in the section header table; all entries are the same size."
2066 msgstr ""
2067
2068 #. type: TP
2069 #: build/C/man5/elf.5:581
2070 #, no-wrap
2071 msgid "I<e_shnum>"
2072 msgstr ""
2073
2074 #. type: Plain text
2075 #: build/C/man5/elf.5:594
2076 msgid ""
2077 "This member holds the number of entries in the section header table.  Thus "
2078 "the product of I<e_shentsize> and I<e_shnum> gives the section header "
2079 "table's size in bytes.  If a file has no section header table, I<e_shnum> "
2080 "holds the value of zero."
2081 msgstr ""
2082
2083 #. type: Plain text
2084 #: build/C/man5/elf.5:606
2085 msgid ""
2086 "If the number of entries in the section header table is larger than or equal "
2087 "to B<SHN_LORESERVE> (0xff00), I<e_shnum> holds the value zero and the real "
2088 "number of entries in the section header table is held in the I<sh_size> "
2089 "member of the initial entry in section header table.  Otherwise, the "
2090 "I<sh_size> member of the initial entry in the section header table holds the "
2091 "value zero."
2092 msgstr ""
2093
2094 #. type: TP
2095 #: build/C/man5/elf.5:606
2096 #, no-wrap
2097 msgid "I<e_shstrndx>"
2098 msgstr ""
2099
2100 #. type: Plain text
2101 #: build/C/man5/elf.5:613
2102 msgid ""
2103 "This member holds the section header table index of the entry associated "
2104 "with the section name string table.  If the file has no section name string "
2105 "table, this member holds the value B<SHN_UNDEF>."
2106 msgstr ""
2107
2108 #. type: Plain text
2109 #: build/C/man5/elf.5:625
2110 msgid ""
2111 "If the index of section name string table section is larger than or equal to "
2112 "B<SHN_LORESERVE> (0xff00), this member holds B<SHN_XINDEX> (0xffff) and the "
2113 "real index of the section name string table section is held in the "
2114 "I<sh_link> member of the initial entry in section header table.  Otherwise, "
2115 "the I<sh_link> member of the initial entry in section header table contains "
2116 "the value zero."
2117 msgstr ""
2118
2119 #. type: TP
2120 #: build/C/man5/elf.5:627 build/C/man5/elf.5:914
2121 #, no-wrap
2122 msgid "B<SHN_UNDEF>"
2123 msgstr ""
2124
2125 #. type: Plain text
2126 #: build/C/man5/elf.5:636
2127 msgid ""
2128 "This value marks an undefined, missing, irrelevant, or otherwise meaningless "
2129 "section reference.  For example, a symbol \"defined\" relative to section "
2130 "number B<SHN_UNDEF> is an undefined symbol."
2131 msgstr ""
2132
2133 #. type: TP
2134 #: build/C/man5/elf.5:636 build/C/man5/elf.5:918
2135 #, no-wrap
2136 msgid "B<SHN_LORESERVE>"
2137 msgstr ""
2138
2139 #. type: Plain text
2140 #: build/C/man5/elf.5:639 build/C/man5/elf.5:921
2141 msgid "This value specifies the lower bound of the range of reserved indices."
2142 msgstr ""
2143
2144 #. type: TP
2145 #: build/C/man5/elf.5:639 build/C/man5/elf.5:921
2146 #, no-wrap
2147 msgid "B<SHN_LOPROC>"
2148 msgstr ""
2149
2150 #. type: Plain text
2151 #: build/C/man5/elf.5:644 build/C/man5/elf.5:926
2152 msgid ""
2153 "Values greater than or equal to B<SHN_HIPROC> are reserved for "
2154 "processor-specific semantics."
2155 msgstr ""
2156
2157 #. type: TP
2158 #: build/C/man5/elf.5:644 build/C/man5/elf.5:926
2159 #, no-wrap
2160 msgid "B<SHN_HIPROC>"
2161 msgstr ""
2162
2163 #. type: Plain text
2164 #: build/C/man5/elf.5:649 build/C/man5/elf.5:931
2165 msgid ""
2166 "Values less than or equal to B<SHN_LOPROC> are reserved for "
2167 "processor-specific semantics."
2168 msgstr ""
2169
2170 #. type: TP
2171 #: build/C/man5/elf.5:649 build/C/man5/elf.5:931
2172 #, no-wrap
2173 msgid "B<SHN_ABS>"
2174 msgstr ""
2175
2176 #. type: Plain text
2177 #: build/C/man5/elf.5:656
2178 msgid ""
2179 "This value specifies absolute values for the corresponding reference.  For "
2180 "example, symbols defined relative to section number B<SHN_ABS> have absolute "
2181 "values and are not affected by relocation."
2182 msgstr ""
2183
2184 #. type: TP
2185 #: build/C/man5/elf.5:656 build/C/man5/elf.5:938
2186 #, no-wrap
2187 msgid "B<SHN_COMMON>"
2188 msgstr ""
2189
2190 #. type: Plain text
2191 #: build/C/man5/elf.5:660
2192 msgid ""
2193 "Symbols defined relative to this section are common symbols, such as Fortran "
2194 "COMMON or unallocated C external variables."
2195 msgstr ""
2196
2197 #. type: TP
2198 #: build/C/man5/elf.5:660 build/C/man5/elf.5:942
2199 #, no-wrap
2200 msgid "B<SHN_HIRESERVE>"
2201 msgstr ""
2202
2203 #. type: Plain text
2204 #: build/C/man5/elf.5:673
2205 msgid ""
2206 "This value specifies the upper bound of the range of reserved indices "
2207 "between B<SHN_LORESERVE> and B<SHN_HIRESERVE>, inclusive; the values do not "
2208 "reference the section header table.  That is, the section header table does "
2209 "I<not> contain entries for the reserved indices."
2210 msgstr ""
2211
2212 #. type: Plain text
2213 #: build/C/man5/elf.5:695
2214 msgid ""
2215 "An executable or shared object file's program header table is an array of "
2216 "structures, each describing a segment or other information the system needs "
2217 "to prepare the program for execution.  An object file I<segment> contains "
2218 "one or more I<sections>.  Program headers are meaningful only for executable "
2219 "and shared object files.  A file specifies its own program header size with "
2220 "the ELF header's I<e_phentsize> and I<e_phnum> members.  The ELF program "
2221 "header is described by the type I<Elf32_Phdr> or I<Elf64_Phdr> depending on "
2222 "the architecture:"
2223 msgstr ""
2224
2225 #. type: Plain text
2226 #: build/C/man5/elf.5:708
2227 #, no-wrap
2228 msgid ""
2229 "typedef struct {\n"
2230 "    uint32_t   p_type;\n"
2231 "    Elf32_Off  p_offset;\n"
2232 "    Elf32_Addr p_vaddr;\n"
2233 "    Elf32_Addr p_paddr;\n"
2234 "    uint32_t   p_filesz;\n"
2235 "    uint32_t   p_memsz;\n"
2236 "    uint32_t   p_flags;\n"
2237 "    uint32_t   p_align;\n"
2238 "} Elf32_Phdr;\n"
2239 msgstr ""
2240
2241 #. type: Plain text
2242 #: build/C/man5/elf.5:723
2243 #, no-wrap
2244 msgid ""
2245 "typedef struct {\n"
2246 "    uint32_t   p_type;\n"
2247 "    uint32_t   p_flags;\n"
2248 "    Elf64_Off  p_offset;\n"
2249 "    Elf64_Addr p_vaddr;\n"
2250 "    Elf64_Addr p_paddr;\n"
2251 "    uint64_t   p_filesz;\n"
2252 "    uint64_t   p_memsz;\n"
2253 "    uint64_t   p_align;\n"
2254 "} Elf64_Phdr;\n"
2255 msgstr ""
2256
2257 #.  .Bl -tag -width "p_offset"
2258 #. type: Plain text
2259 #: build/C/man5/elf.5:731
2260 msgid ""
2261 "The main difference between the 32-bit and the 64-bit program header lies in "
2262 "the location of the I<p_flags> member in the total struct."
2263 msgstr ""
2264
2265 #. type: TP
2266 #: build/C/man5/elf.5:731
2267 #, no-wrap
2268 msgid "I<p_type>"
2269 msgstr ""
2270
2271 #.  .Bl -tag -width "PT_DYNAMIC"
2272 #. type: Plain text
2273 #: build/C/man5/elf.5:736
2274 msgid ""
2275 "This member of the Phdr struct tells what kind of segment this array element "
2276 "describes or how to interpret the array element's information."
2277 msgstr ""
2278
2279 #. type: TP
2280 #: build/C/man5/elf.5:737
2281 #, no-wrap
2282 msgid "B<PT_NULL>"
2283 msgstr ""
2284
2285 #. type: Plain text
2286 #: build/C/man5/elf.5:741
2287 msgid ""
2288 "The array element is unused and the other members' values are undefined.  "
2289 "This lets the program header have ignored entries."
2290 msgstr ""
2291
2292 #. type: TP
2293 #: build/C/man5/elf.5:741
2294 #, no-wrap
2295 msgid "B<PT_LOAD>"
2296 msgstr ""
2297
2298 #. type: Plain text
2299 #: build/C/man5/elf.5:762
2300 msgid ""
2301 "The array element specifies a loadable segment, described by I<p_filesz> and "
2302 "I<p_memsz>.  The bytes from the file are mapped to the beginning of the "
2303 "memory segment.  If the segment's memory size I<p_memsz> is larger than the "
2304 "file size I<p_filesz>, the \"extra\" bytes are defined to hold the value 0 "
2305 "and to follow the segment's initialized area.  The file size may not be "
2306 "larger than the memory size.  Loadable segment entries in the program header "
2307 "table appear in ascending order, sorted on the I<p_vaddr> member."
2308 msgstr ""
2309
2310 #. type: TP
2311 #: build/C/man5/elf.5:762
2312 #, no-wrap
2313 msgid "B<PT_DYNAMIC>"
2314 msgstr ""
2315
2316 #. type: Plain text
2317 #: build/C/man5/elf.5:765
2318 msgid "The array element specifies dynamic linking information."
2319 msgstr ""
2320
2321 #. type: TP
2322 #: build/C/man5/elf.5:765
2323 #, no-wrap
2324 msgid "B<PT_INTERP>"
2325 msgstr ""
2326
2327 #. type: Plain text
2328 #: build/C/man5/elf.5:773
2329 msgid ""
2330 "The array element specifies the location and size of a null-terminated "
2331 "pathname to invoke as an interpreter.  This segment type is meaningful only "
2332 "for executable files (though it may occur for shared objects).  However it "
2333 "may not occur more than once in a file.  If it is present, it must precede "
2334 "any loadable segment entry."
2335 msgstr ""
2336
2337 #. type: TP
2338 #: build/C/man5/elf.5:773
2339 #, no-wrap
2340 msgid "B<PT_NOTE>"
2341 msgstr ""
2342
2343 #. type: Plain text
2344 #: build/C/man5/elf.5:776
2345 msgid "The array element specifies the location and size for auxiliary information."
2346 msgstr ""
2347
2348 #. type: TP
2349 #: build/C/man5/elf.5:776
2350 #, no-wrap
2351 msgid "B<PT_SHLIB>"
2352 msgstr ""
2353
2354 #. type: Plain text
2355 #: build/C/man5/elf.5:781
2356 msgid ""
2357 "This segment type is reserved but has unspecified semantics.  Programs that "
2358 "contain an array element of this type do not conform to the ABI."
2359 msgstr ""
2360
2361 #. type: TP
2362 #: build/C/man5/elf.5:781
2363 #, no-wrap
2364 msgid "B<PT_PHDR>"
2365 msgstr ""
2366
2367 #. type: Plain text
2368 #: build/C/man5/elf.5:790
2369 msgid ""
2370 "The array element, if present, specifies the location and size of the "
2371 "program header table itself, both in the file and in the memory image of the "
2372 "program.  This segment type may not occur more than once in a file.  "
2373 "Moreover, it may occur only if the program header table is part of the "
2374 "memory image of the program.  If it is present, it must precede any loadable "
2375 "segment entry."
2376 msgstr ""
2377
2378 #. type: TP
2379 #: build/C/man5/elf.5:790
2380 #, no-wrap
2381 msgid "B<PT_LOPROC>"
2382 msgstr ""
2383
2384 #. type: Plain text
2385 #: build/C/man5/elf.5:795
2386 msgid ""
2387 "Values greater than or equal to B<PT_HIPROC> are reserved for "
2388 "processor-specific semantics."
2389 msgstr ""
2390
2391 #. type: TP
2392 #: build/C/man5/elf.5:795
2393 #, no-wrap
2394 msgid "B<PT_HIPROC>"
2395 msgstr ""
2396
2397 #. type: Plain text
2398 #: build/C/man5/elf.5:800
2399 msgid ""
2400 "Values less than or equal to B<PT_LOPROC> are reserved for "
2401 "processor-specific semantics."
2402 msgstr ""
2403
2404 #. type: TP
2405 #: build/C/man5/elf.5:800
2406 #, no-wrap
2407 msgid "B<PT_GNU_STACK>"
2408 msgstr ""
2409
2410 #.  .El
2411 #. type: Plain text
2412 #: build/C/man5/elf.5:807
2413 msgid ""
2414 "GNU extension which is used by the Linux kernel to control the state of the "
2415 "stack via the flags set in the I<p_flags> member."
2416 msgstr ""
2417
2418 #. type: TP
2419 #: build/C/man5/elf.5:808
2420 #, no-wrap
2421 msgid "I<p_offset>"
2422 msgstr ""
2423
2424 #. type: Plain text
2425 #: build/C/man5/elf.5:812
2426 msgid ""
2427 "This member holds the offset from the beginning of the file at which the "
2428 "first byte of the segment resides."
2429 msgstr ""
2430
2431 #. type: TP
2432 #: build/C/man5/elf.5:812
2433 #, no-wrap
2434 msgid "I<p_vaddr>"
2435 msgstr ""
2436
2437 #. type: Plain text
2438 #: build/C/man5/elf.5:816
2439 msgid ""
2440 "This member holds the virtual address at which the first byte of the segment "
2441 "resides in memory."
2442 msgstr ""
2443
2444 #. type: TP
2445 #: build/C/man5/elf.5:816
2446 #, no-wrap
2447 msgid "I<p_paddr>"
2448 msgstr ""
2449
2450 #. type: Plain text
2451 #: build/C/man5/elf.5:824
2452 msgid ""
2453 "On systems for which physical addressing is relevant, this member is "
2454 "reserved for the segment's physical address.  Under BSD this member is not "
2455 "used and must be zero."
2456 msgstr ""
2457
2458 #. type: TP
2459 #: build/C/man5/elf.5:824
2460 #, no-wrap
2461 msgid "I<p_filesz>"
2462 msgstr ""
2463
2464 #. type: Plain text
2465 #: build/C/man5/elf.5:828
2466 msgid ""
2467 "This member holds the number of bytes in the file image of the segment.  It "
2468 "may be zero."
2469 msgstr ""
2470
2471 #. type: TP
2472 #: build/C/man5/elf.5:828
2473 #, no-wrap
2474 msgid "I<p_memsz>"
2475 msgstr ""
2476
2477 #. type: Plain text
2478 #: build/C/man5/elf.5:832
2479 msgid ""
2480 "This member holds the number of bytes in the memory image of the segment.  "
2481 "It may be zero."
2482 msgstr ""
2483
2484 #. type: TP
2485 #: build/C/man5/elf.5:832
2486 #, no-wrap
2487 msgid "I<p_flags>"
2488 msgstr ""
2489
2490 #.  .Bl -tag -width "PF_X" -compact
2491 #. type: Plain text
2492 #: build/C/man5/elf.5:836
2493 msgid "This member holds a bit mask of flags relevant to the segment:"
2494 msgstr ""
2495
2496 #. type: TP
2497 #: build/C/man5/elf.5:837
2498 #, no-wrap
2499 msgid "B<PF_X>"
2500 msgstr ""
2501
2502 #. type: Plain text
2503 #: build/C/man5/elf.5:841
2504 msgid "An executable segment."
2505 msgstr ""
2506
2507 #. type: TP
2508 #: build/C/man5/elf.5:841
2509 #, no-wrap
2510 msgid "B<PF_W>"
2511 msgstr ""
2512
2513 #. type: Plain text
2514 #: build/C/man5/elf.5:844
2515 msgid "A writable segment."
2516 msgstr ""
2517
2518 #. type: TP
2519 #: build/C/man5/elf.5:844
2520 #, no-wrap
2521 msgid "B<PF_R>"
2522 msgstr ""
2523
2524 #. type: Plain text
2525 #: build/C/man5/elf.5:847
2526 msgid "A readable segment."
2527 msgstr ""
2528
2529 #. type: Plain text
2530 #: build/C/man5/elf.5:860
2531 msgid ""
2532 "A text segment commonly has the flags B<PF_X> and B<PF_R>.  A data segment "
2533 "commonly has B<PF_X>, B<PF_W> and B<PF_R>."
2534 msgstr ""
2535
2536 #. type: TP
2537 #: build/C/man5/elf.5:860
2538 #, no-wrap
2539 msgid "I<p_align>"
2540 msgstr ""
2541
2542 #.  .El
2543 #. type: Plain text
2544 #: build/C/man5/elf.5:879
2545 msgid ""
2546 "This member holds the value to which the segments are aligned in memory and "
2547 "in the file.  Loadable process segments must have congruent values for "
2548 "I<p_vaddr> and I<p_offset>, modulo the page size.  Values of zero and one "
2549 "mean no alignment is required.  Otherwise, I<p_align> should be a positive, "
2550 "integral power of two, and I<p_vaddr> should equal I<p_offset>, modulo "
2551 "I<p_align>."
2552 msgstr ""
2553
2554 #. type: Plain text
2555 #: build/C/man5/elf.5:896
2556 msgid ""
2557 "A file's section header table lets one locate all the file's sections.  The "
2558 "section header table is an array of I<Elf32_Shdr> or I<Elf64_Shdr> "
2559 "structures.  The ELF header's I<e_shoff> member gives the byte offset from "
2560 "the beginning of the file to the section header table.  I<e_shnum> holds the "
2561 "number of entries the section header table contains.  I<e_shentsize> holds "
2562 "the size in bytes of each entry."
2563 msgstr ""
2564
2565 #.  .Bl -tag -width "SHN_LORESERVE"
2566 #. type: Plain text
2567 #: build/C/man5/elf.5:913
2568 msgid ""
2569 "A section header table index is a subscript into this array.  Some section "
2570 "header table indices are reserved: the initial entry and the indices between "
2571 "B<SHN_LORESERVE> and B<SHN_HIRESERVE>.  The initial entry is used in ELF "
2572 "extensions for I<e_phnum>, I<e_shnum> and I<e_strndx>; in other cases, each "
2573 "field in the initial entry is set to zero.  An object file does not have "
2574 "sections for these special indices:"
2575 msgstr ""
2576
2577 #. type: Plain text
2578 #: build/C/man5/elf.5:918
2579 msgid ""
2580 "This value marks an undefined, missing, irrelevant, or otherwise meaningless "
2581 "section reference."
2582 msgstr ""
2583
2584 #. type: Plain text
2585 #: build/C/man5/elf.5:938
2586 msgid ""
2587 "This value specifies the absolute value for the corresponding reference.  "
2588 "For example, a symbol defined relative to section number B<SHN_ABS> has an "
2589 "absolute value and is not affected by relocation."
2590 msgstr ""
2591
2592 #. type: Plain text
2593 #: build/C/man5/elf.5:942
2594 msgid ""
2595 "Symbols defined relative to this section are common symbols, such as FORTRAN "
2596 "COMMON or unallocated C external variables."
2597 msgstr ""
2598
2599 #. type: Plain text
2600 #: build/C/man5/elf.5:953
2601 msgid ""
2602 "This value specifies the upper bound of the range of reserved indices.  The "
2603 "system reserves indices between B<SHN_LORESERVE> and B<SHN_HIRESERVE>, "
2604 "inclusive.  The section header table does not contain entries for the "
2605 "reserved indices."
2606 msgstr ""
2607
2608 #. type: Plain text
2609 #: build/C/man5/elf.5:957
2610 msgid "The section header has the following structure:"
2611 msgstr ""
2612
2613 #. type: Plain text
2614 #: build/C/man5/elf.5:972
2615 #, no-wrap
2616 msgid ""
2617 "typedef struct {\n"
2618 "    uint32_t   sh_name;\n"
2619 "    uint32_t   sh_type;\n"
2620 "    uint32_t   sh_flags;\n"
2621 "    Elf32_Addr sh_addr;\n"
2622 "    Elf32_Off  sh_offset;\n"
2623 "    uint32_t   sh_size;\n"
2624 "    uint32_t   sh_link;\n"
2625 "    uint32_t   sh_info;\n"
2626 "    uint32_t   sh_addralign;\n"
2627 "    uint32_t   sh_entsize;\n"
2628 "} Elf32_Shdr;\n"
2629 msgstr ""
2630
2631 #. type: Plain text
2632 #: build/C/man5/elf.5:989
2633 #, no-wrap
2634 msgid ""
2635 "typedef struct {\n"
2636 "    uint32_t   sh_name;\n"
2637 "    uint32_t   sh_type;\n"
2638 "    uint64_t   sh_flags;\n"
2639 "    Elf64_Addr sh_addr;\n"
2640 "    Elf64_Off  sh_offset;\n"
2641 "    uint64_t   sh_size;\n"
2642 "    uint32_t   sh_link;\n"
2643 "    uint32_t   sh_info;\n"
2644 "    uint64_t   sh_addralign;\n"
2645 "    uint64_t   sh_entsize;\n"
2646 "} Elf64_Shdr;\n"
2647 msgstr ""
2648
2649 #.  .Bl -tag -width "sh_addralign"
2650 #. type: Plain text
2651 #: build/C/man5/elf.5:994
2652 msgid "No real differences exist between the 32-bit and 64-bit section headers."
2653 msgstr ""
2654
2655 #. type: TP
2656 #: build/C/man5/elf.5:994
2657 #, no-wrap
2658 msgid "I<sh_name>"
2659 msgstr ""
2660
2661 #. type: Plain text
2662 #: build/C/man5/elf.5:1000
2663 msgid ""
2664 "This member specifies the name of the section.  Its value is an index into "
2665 "the section header string table section, giving the location of a "
2666 "null-terminated string."
2667 msgstr ""
2668
2669 #. type: TP
2670 #: build/C/man5/elf.5:1000
2671 #, no-wrap
2672 msgid "I<sh_type>"
2673 msgstr ""
2674
2675 #.  .Bl -tag -width "SHT_PROGBITS"
2676 #. type: Plain text
2677 #: build/C/man5/elf.5:1004
2678 msgid "This member categorizes the section's contents and semantics."
2679 msgstr ""
2680
2681 #. type: TP
2682 #: build/C/man5/elf.5:1005
2683 #, no-wrap
2684 msgid "B<SHT_NULL>"
2685 msgstr ""
2686
2687 #. type: Plain text
2688 #: build/C/man5/elf.5:1012
2689 msgid ""
2690 "This value marks the section header as inactive.  It does not have an "
2691 "associated section.  Other members of the section header have undefined "
2692 "values."
2693 msgstr ""
2694
2695 #. type: TP
2696 #: build/C/man5/elf.5:1012
2697 #, no-wrap
2698 msgid "B<SHT_PROGBITS>"
2699 msgstr ""
2700
2701 #. type: Plain text
2702 #: build/C/man5/elf.5:1016
2703 msgid ""
2704 "This section holds information defined by the program, whose format and "
2705 "meaning are determined solely by the program."
2706 msgstr ""
2707
2708 #. type: TP
2709 #: build/C/man5/elf.5:1016
2710 #, no-wrap
2711 msgid "B<SHT_SYMTAB>"
2712 msgstr ""
2713
2714 #. type: Plain text
2715 #: build/C/man5/elf.5:1029
2716 msgid ""
2717 "This section holds a symbol table.  Typically, B<SHT_SYMTAB> provides "
2718 "symbols for link editing, though it may also be used for dynamic linking.  "
2719 "As a complete symbol table, it may contain many symbols unnecessary for "
2720 "dynamic linking.  An object file can also contain a B<SHT_DYNSYM> section."
2721 msgstr ""
2722
2723 #. type: TP
2724 #: build/C/man5/elf.5:1029
2725 #, no-wrap
2726 msgid "B<SHT_STRTAB>"
2727 msgstr ""
2728
2729 #. type: Plain text
2730 #: build/C/man5/elf.5:1034
2731 msgid ""
2732 "This section holds a string table.  An object file may have multiple string "
2733 "table sections."
2734 msgstr ""
2735
2736 #. type: TP
2737 #: build/C/man5/elf.5:1034
2738 #, no-wrap
2739 msgid "B<SHT_RELA>"
2740 msgstr ""
2741
2742 #. type: Plain text
2743 #: build/C/man5/elf.5:1042
2744 msgid ""
2745 "This section holds relocation entries with explicit addends, such as type "
2746 "I<Elf32_Rela> for the 32-bit class of object files.  An object may have "
2747 "multiple relocation sections."
2748 msgstr ""
2749
2750 #. type: TP
2751 #: build/C/man5/elf.5:1042
2752 #, no-wrap
2753 msgid "B<SHT_HASH>"
2754 msgstr ""
2755
2756 #. type: Plain text
2757 #: build/C/man5/elf.5:1049
2758 msgid ""
2759 "This section holds a symbol hash table.  An object participating in dynamic "
2760 "linking must contain a symbol hash table.  An object file may have only one "
2761 "hash table."
2762 msgstr ""
2763
2764 #. type: TP
2765 #: build/C/man5/elf.5:1049
2766 #, no-wrap
2767 msgid "B<SHT_DYNAMIC>"
2768 msgstr ""
2769
2770 #. type: Plain text
2771 #: build/C/man5/elf.5:1054
2772 msgid ""
2773 "This section holds information for dynamic linking.  An object file may have "
2774 "only one dynamic section."
2775 msgstr ""
2776
2777 #. type: TP
2778 #: build/C/man5/elf.5:1054
2779 #, no-wrap
2780 msgid "B<SHT_NOTE>"
2781 msgstr ""
2782
2783 #. type: Plain text
2784 #: build/C/man5/elf.5:1057
2785 msgid "This section holds information that marks the file in some way."
2786 msgstr ""
2787
2788 #. type: TP
2789 #: build/C/man5/elf.5:1057
2790 #, no-wrap
2791 msgid "B<SHT_NOBITS>"
2792 msgstr ""
2793
2794 #. type: Plain text
2795 #: build/C/man5/elf.5:1065
2796 msgid ""
2797 "A section of this type occupies no space in the file but otherwise resembles "
2798 "B<SHT_PROGBITS>.  Although this section contains no bytes, the I<sh_offset> "
2799 "member contains the conceptual file offset."
2800 msgstr ""
2801
2802 #. type: TP
2803 #: build/C/man5/elf.5:1065
2804 #, no-wrap
2805 msgid "B<SHT_REL>"
2806 msgstr ""
2807
2808 #. type: Plain text
2809 #: build/C/man5/elf.5:1073
2810 msgid ""
2811 "This section holds relocation offsets without explicit addends, such as type "
2812 "I<Elf32_Rel> for the 32-bit class of object files.  An object file may have "
2813 "multiple relocation sections."
2814 msgstr ""
2815
2816 #. type: TP
2817 #: build/C/man5/elf.5:1073
2818 #, no-wrap
2819 msgid "B<SHT_SHLIB>"
2820 msgstr ""
2821
2822 #. type: Plain text
2823 #: build/C/man5/elf.5:1076
2824 msgid "This section is reserved but has unspecified semantics."
2825 msgstr ""
2826
2827 #. type: TP
2828 #: build/C/man5/elf.5:1076
2829 #, no-wrap
2830 msgid "B<SHT_DYNSYM>"
2831 msgstr ""
2832
2833 #. type: Plain text
2834 #: build/C/man5/elf.5:1083
2835 msgid ""
2836 "This section holds a minimal set of dynamic linking symbols.  An object file "
2837 "can also contain a B<SHT_SYMTAB> section."
2838 msgstr ""
2839
2840 #. type: TP
2841 #: build/C/man5/elf.5:1083
2842 #, no-wrap
2843 msgid "B<SHT_LOPROC>"
2844 msgstr ""
2845
2846 #. type: Plain text
2847 #: build/C/man5/elf.5:1088
2848 msgid ""
2849 "This value up to and including B<SHT_HIPROC> is reserved for "
2850 "processor-specific semantics."
2851 msgstr ""
2852
2853 #. type: TP
2854 #: build/C/man5/elf.5:1088
2855 #, no-wrap
2856 msgid "B<SHT_HIPROC>"
2857 msgstr ""
2858
2859 #. type: Plain text
2860 #: build/C/man5/elf.5:1093
2861 msgid ""
2862 "This value down to and including B<SHT_LOPROC> is reserved for "
2863 "processor-specific semantics."
2864 msgstr ""
2865
2866 #. type: TP
2867 #: build/C/man5/elf.5:1093
2868 #, no-wrap
2869 msgid "B<SHT_LOUSER>"
2870 msgstr ""
2871
2872 #. type: Plain text
2873 #: build/C/man5/elf.5:1097
2874 msgid ""
2875 "This value specifies the lower bound of the range of indices reserved for "
2876 "application programs."
2877 msgstr ""
2878
2879 #. type: TP
2880 #: build/C/man5/elf.5:1097
2881 #, no-wrap
2882 msgid "B<SHT_HIUSER>"
2883 msgstr ""
2884
2885 #.  .El
2886 #. type: Plain text
2887 #: build/C/man5/elf.5:1108
2888 msgid ""
2889 "This value specifies the upper bound of the range of indices reserved for "
2890 "application programs.  Section types between B<SHT_LOUSER> and B<SHT_HIUSER> "
2891 "may be used by the application, without conflicting with current or future "
2892 "system-defined section types."
2893 msgstr ""
2894
2895 #. type: TP
2896 #: build/C/man5/elf.5:1109
2897 #, no-wrap
2898 msgid "I<sh_flags>"
2899 msgstr ""
2900
2901 #.  .Bl -tag -width "SHF_EXECINSTR" -compact
2902 #. type: Plain text
2903 #: build/C/man5/elf.5:1122
2904 msgid ""
2905 "Sections support one-bit flags that describe miscellaneous attributes.  If a "
2906 "flag bit is set in I<sh_flags>, the attribute is \"on\" for the section.  "
2907 "Otherwise, the attribute is \"off\" or does not apply.  Undefined attributes "
2908 "are set to zero."
2909 msgstr ""
2910
2911 #. type: TP
2912 #: build/C/man5/elf.5:1123
2913 #, no-wrap
2914 msgid "B<SHF_WRITE>"
2915 msgstr ""
2916
2917 #. type: Plain text
2918 #: build/C/man5/elf.5:1127
2919 msgid "This section contains data that should be writable during process execution."
2920 msgstr ""
2921
2922 #. type: TP
2923 #: build/C/man5/elf.5:1127
2924 #, no-wrap
2925 msgid "B<SHF_ALLOC>"
2926 msgstr ""
2927
2928 #. type: Plain text
2929 #: build/C/man5/elf.5:1134
2930 msgid ""
2931 "This section occupies memory during process execution.  Some control "
2932 "sections do not reside in the memory image of an object file.  This "
2933 "attribute is off for those sections."
2934 msgstr ""
2935
2936 #. type: TP
2937 #: build/C/man5/elf.5:1134
2938 #, no-wrap
2939 msgid "B<SHF_EXECINSTR>"
2940 msgstr ""
2941
2942 #. type: Plain text
2943 #: build/C/man5/elf.5:1137
2944 msgid "This section contains executable machine instructions."
2945 msgstr ""
2946
2947 #. type: TP
2948 #: build/C/man5/elf.5:1137
2949 #, no-wrap
2950 msgid "B<SHF_MASKPROC>"
2951 msgstr ""
2952
2953 #. type: Plain text
2954 #: build/C/man5/elf.5:1141
2955 msgid ""
2956 "All bits included in this mask are reserved for processor-specific "
2957 "semantics."
2958 msgstr ""
2959
2960 #. type: TP
2961 #: build/C/man5/elf.5:1143
2962 #, no-wrap
2963 msgid "I<sh_addr>"
2964 msgstr ""
2965
2966 #. type: Plain text
2967 #: build/C/man5/elf.5:1148
2968 msgid ""
2969 "If this section appears in the memory image of a process, this member holds "
2970 "the address at which the section's first byte should reside.  Otherwise, the "
2971 "member contains zero."
2972 msgstr ""
2973
2974 #. type: TP
2975 #: build/C/man5/elf.5:1148
2976 #, no-wrap
2977 msgid "I<sh_offset>"
2978 msgstr ""
2979
2980 #. type: Plain text
2981 #: build/C/man5/elf.5:1157
2982 msgid ""
2983 "This member's value holds the byte offset from the beginning of the file to "
2984 "the first byte in the section.  One section type, B<SHT_NOBITS>, occupies no "
2985 "space in the file, and its I<sh_offset> member locates the conceptual "
2986 "placement in the file."
2987 msgstr ""
2988
2989 #. type: TP
2990 #: build/C/man5/elf.5:1157
2991 #, no-wrap
2992 msgid "I<sh_size>"
2993 msgstr ""
2994
2995 #. type: Plain text
2996 #: build/C/man5/elf.5:1169
2997 msgid ""
2998 "This member holds the section's size in bytes.  Unless the section type is "
2999 "B<SHT_NOBITS>, the section occupies I<sh_size> bytes in the file.  A section "
3000 "of type B<SHT_NOBITS> may have a nonzero size, but it occupies no space in "
3001 "the file."
3002 msgstr ""
3003
3004 #. type: TP
3005 #: build/C/man5/elf.5:1169
3006 #, no-wrap
3007 msgid "I<sh_link>"
3008 msgstr ""
3009
3010 #. type: Plain text
3011 #: build/C/man5/elf.5:1173
3012 msgid ""
3013 "This member holds a section header table index link, whose interpretation "
3014 "depends on the section type."
3015 msgstr ""
3016
3017 #. type: TP
3018 #: build/C/man5/elf.5:1173
3019 #, no-wrap
3020 msgid "I<sh_info>"
3021 msgstr ""
3022
3023 #. type: Plain text
3024 #: build/C/man5/elf.5:1177
3025 msgid ""
3026 "This member holds extra information, whose interpretation depends on the "
3027 "section type."
3028 msgstr ""
3029
3030 #. type: TP
3031 #: build/C/man5/elf.5:1177
3032 #, no-wrap
3033 msgid "I<sh_addralign>"
3034 msgstr ""
3035
3036 #. type: Plain text
3037 #: build/C/man5/elf.5:1190
3038 msgid ""
3039 "Some sections have address alignment constraints.  If a section holds a "
3040 "doubleword, the system must ensure doubleword alignment for the entire "
3041 "section.  That is, the value of I<sh_addr> must be congruent to zero, modulo "
3042 "the value of I<sh_addralign>.  Only zero and positive integral powers of two "
3043 "are allowed.  Values of zero or one mean the section has no alignment "
3044 "constraints."
3045 msgstr ""
3046
3047 #. type: TP
3048 #: build/C/man5/elf.5:1190
3049 #, no-wrap
3050 msgid "I<sh_entsize>"
3051 msgstr ""
3052
3053 #.  .El
3054 #. type: Plain text
3055 #: build/C/man5/elf.5:1197
3056 msgid ""
3057 "Some sections hold a table of fixed-sized entries, such as a symbol table.  "
3058 "For such a section, this member gives the size in bytes for each entry.  "
3059 "This member contains zero if the section does not hold a table of fixed-size "
3060 "entries."
3061 msgstr ""
3062
3063 #.  .Bl -tag -width ".shstrtab"
3064 #. type: Plain text
3065 #: build/C/man5/elf.5:1200
3066 msgid "Various sections hold program and control information:"
3067 msgstr ""
3068
3069 #. type: TP
3070 #: build/C/man5/elf.5:1200
3071 #, no-wrap
3072 msgid "I<.bss>"
3073 msgstr ""
3074
3075 #. type: Plain text
3076 #: build/C/man5/elf.5:1212
3077 msgid ""
3078 "This section holds uninitialized data that contributes to the program's "
3079 "memory image.  By definition, the system initializes the data with zeros "
3080 "when the program begins to run.  This section is of type B<SHT_NOBITS>.  The "
3081 "attribute types are B<SHF_ALLOC> and B<SHF_WRITE>."
3082 msgstr ""
3083
3084 #. type: TP
3085 #: build/C/man5/elf.5:1212
3086 #, no-wrap
3087 msgid "I<.comment>"
3088 msgstr ""
3089
3090 #. type: Plain text
3091 #: build/C/man5/elf.5:1218
3092 msgid ""
3093 "This section holds version control information.  This section is of type "
3094 "B<SHT_PROGBITS>.  No attribute types are used."
3095 msgstr ""
3096
3097 #. type: TP
3098 #: build/C/man5/elf.5:1218
3099 #, no-wrap
3100 msgid "I<.ctors>"
3101 msgstr ""
3102
3103 #. type: Plain text
3104 #: build/C/man5/elf.5:1227
3105 msgid ""
3106 "This section holds initialized pointers to the C++ constructor functions.  "
3107 "This section is of type B<SHT_PROGBITS>.  The attribute types are "
3108 "B<SHF_ALLOC> and B<SHF_WRITE>."
3109 msgstr ""
3110
3111 #. type: TP
3112 #: build/C/man5/elf.5:1227
3113 #, no-wrap
3114 msgid "I<.data>"
3115 msgstr ""
3116
3117 #. type: Plain text
3118 #: build/C/man5/elf.5:1237 build/C/man5/elf.5:1247
3119 msgid ""
3120 "This section holds initialized data that contribute to the program's memory "
3121 "image.  This section is of type B<SHT_PROGBITS>.  The attribute types are "
3122 "B<SHF_ALLOC> and B<SHF_WRITE>."
3123 msgstr ""
3124
3125 #. type: TP
3126 #: build/C/man5/elf.5:1237
3127 #, no-wrap
3128 msgid "I<.data1>"
3129 msgstr ""
3130
3131 #. type: TP
3132 #: build/C/man5/elf.5:1247
3133 #, no-wrap
3134 msgid "I<.debug>"
3135 msgstr ""
3136
3137 #. type: Plain text
3138 #: build/C/man5/elf.5:1255
3139 msgid ""
3140 "This section holds information for symbolic debugging.  The contents are "
3141 "unspecified.  This section is of type B<SHT_PROGBITS>.  No attribute types "
3142 "are used."
3143 msgstr ""
3144
3145 #. type: TP
3146 #: build/C/man5/elf.5:1255
3147 #, no-wrap
3148 msgid "I<.dtors>"
3149 msgstr ""
3150
3151 #. type: Plain text
3152 #: build/C/man5/elf.5:1264
3153 msgid ""
3154 "This section holds initialized pointers to the C++ destructor functions.  "
3155 "This section is of type B<SHT_PROGBITS>.  The attribute types are "
3156 "B<SHF_ALLOC> and B<SHF_WRITE>."
3157 msgstr ""
3158
3159 #. type: TP
3160 #: build/C/man5/elf.5:1264
3161 #, no-wrap
3162 msgid "I<.dynamic>"
3163 msgstr ""
3164
3165 #. type: Plain text
3166 #: build/C/man5/elf.5:1277
3167 msgid ""
3168 "This section holds dynamic linking information.  The section's attributes "
3169 "will include the B<SHF_ALLOC> bit.  Whether the B<SHF_WRITE> bit is set is "
3170 "processor-specific.  This section is of type B<SHT_DYNAMIC>.  See the "
3171 "attributes above."
3172 msgstr ""
3173
3174 #. type: TP
3175 #: build/C/man5/elf.5:1277
3176 #, no-wrap
3177 msgid "I<.dynstr>"
3178 msgstr ""
3179
3180 #. type: Plain text
3181 #: build/C/man5/elf.5:1285
3182 msgid ""
3183 "This section holds strings needed for dynamic linking, most commonly the "
3184 "strings that represent the names associated with symbol table entries.  This "
3185 "section is of type B<SHT_STRTAB>.  The attribute type used is B<SHF_ALLOC>."
3186 msgstr ""
3187
3188 #. type: TP
3189 #: build/C/man5/elf.5:1285
3190 #, no-wrap
3191 msgid "I<.dynsym>"
3192 msgstr ""
3193
3194 #. type: Plain text
3195 #: build/C/man5/elf.5:1292
3196 msgid ""
3197 "This section holds the dynamic linking symbol table.  This section is of "
3198 "type B<SHT_DYNSYM>.  The attribute used is B<SHF_ALLOC>."
3199 msgstr ""
3200
3201 #. type: TP
3202 #: build/C/man5/elf.5:1292
3203 #, no-wrap
3204 msgid "I<.fini>"
3205 msgstr ""
3206
3207 #. type: Plain text
3208 #: build/C/man5/elf.5:1304
3209 msgid ""
3210 "This section holds executable instructions that contribute to the process "
3211 "termination code.  When a program exits normally the system arranges to "
3212 "execute the code in this section.  This section is of type B<SHT_PROGBITS>.  "
3213 "The attributes used are B<SHF_ALLOC> and B<SHF_EXECINSTR>."
3214 msgstr ""
3215
3216 #. type: TP
3217 #: build/C/man5/elf.5:1304
3218 #, no-wrap
3219 msgid "I<.gnu.version>"
3220 msgstr ""
3221
3222 #. type: Plain text
3223 #: build/C/man5/elf.5:1313
3224 msgid ""
3225 "This section holds the version symbol table, an array of I<ElfN_Half> "
3226 "elements.  This section is of type B<SHT_GNU_versym>.  The attribute type "
3227 "used is B<SHF_ALLOC>."
3228 msgstr ""
3229
3230 #. type: TP
3231 #: build/C/man5/elf.5:1313
3232 #, no-wrap
3233 msgid "I<.gnu.version_d>"
3234 msgstr ""
3235
3236 #. type: Plain text
3237 #: build/C/man5/elf.5:1322
3238 msgid ""
3239 "This section holds the version symbol definitions, a table of I<ElfN_Verdef> "
3240 "structures.  This section is of type B<SHT_GNU_verdef>.  The attribute type "
3241 "used is B<SHF_ALLOC>."
3242 msgstr ""
3243
3244 #. type: TP
3245 #: build/C/man5/elf.5:1322
3246 #, no-wrap
3247 msgid "I<.gnu.version_r>"
3248 msgstr ""
3249
3250 #. type: Plain text
3251 #: build/C/man5/elf.5:1332
3252 msgid ""
3253 "This section holds the version symbol needed elements, a table of "
3254 "I<ElfN_Verneed> structures.  This section is of type B<SHT_GNU_versym>.  The "
3255 "attribute type used is B<SHF_ALLOC>."
3256 msgstr ""
3257
3258 #. type: TP
3259 #: build/C/man5/elf.5:1332
3260 #, no-wrap
3261 msgid "I<.got>"
3262 msgstr ""
3263
3264 #. type: Plain text
3265 #: build/C/man5/elf.5:1338
3266 msgid ""
3267 "This section holds the global offset table.  This section is of type "
3268 "B<SHT_PROGBITS>.  The attributes are processor-specific."
3269 msgstr ""
3270
3271 #. type: TP
3272 #: build/C/man5/elf.5:1338
3273 #, no-wrap
3274 msgid "I<.hash>"
3275 msgstr ""
3276
3277 #. type: Plain text
3278 #: build/C/man5/elf.5:1345
3279 msgid ""
3280 "This section holds a symbol hash table.  This section is of type "
3281 "B<SHT_HASH>.  The attribute used is B<SHF_ALLOC>."
3282 msgstr ""
3283
3284 #. type: TP
3285 #: build/C/man5/elf.5:1345
3286 #, no-wrap
3287 msgid "I<.init>"
3288 msgstr ""
3289
3290 #. type: Plain text
3291 #: build/C/man5/elf.5:1357
3292 msgid ""
3293 "This section holds executable instructions that contribute to the process "
3294 "initialization code.  When a program starts to run the system arranges to "
3295 "execute the code in this section before calling the main program entry "
3296 "point.  This section is of type B<SHT_PROGBITS>.  The attributes used are "
3297 "B<SHF_ALLOC> and B<SHF_EXECINSTR>."
3298 msgstr ""
3299
3300 #. type: TP
3301 #: build/C/man5/elf.5:1357
3302 #, no-wrap
3303 msgid "I<.interp>"
3304 msgstr ""
3305
3306 #. type: Plain text
3307 #: build/C/man5/elf.5:1368
3308 msgid ""
3309 "This section holds the pathname of a program interpreter.  If the file has a "
3310 "loadable segment that includes the section, the section's attributes will "
3311 "include the B<SHF_ALLOC> bit.  Otherwise, that bit will be off.  This "
3312 "section is of type B<SHT_PROGBITS>."
3313 msgstr ""
3314
3315 #. type: TP
3316 #: build/C/man5/elf.5:1368
3317 #, no-wrap
3318 msgid "I<.line>"
3319 msgstr ""
3320
3321 #. type: Plain text
3322 #: build/C/man5/elf.5:1376
3323 msgid ""
3324 "This section holds line number information for symbolic debugging, which "
3325 "describes the correspondence between the program source and the machine "
3326 "code.  The contents are unspecified.  This section is of type "
3327 "B<SHT_PROGBITS>.  No attribute types are used."
3328 msgstr ""
3329
3330 #. type: TP
3331 #: build/C/man5/elf.5:1376
3332 #, no-wrap
3333 msgid "I<.note>"
3334 msgstr ""
3335
3336 #. type: Plain text
3337 #: build/C/man5/elf.5:1389
3338 msgid ""
3339 "This section holds information in the \"Note Section\" format.  This section "
3340 "is of type B<SHT_NOTE>.  No attribute types are used.  OpenBSD native "
3341 "executables usually contain a I<.note.openbsd.ident> section to identify "
3342 "themselves, for the kernel to bypass any compatibility ELF binary emulation "
3343 "tests when loading the file."
3344 msgstr ""
3345
3346 #. type: TP
3347 #: build/C/man5/elf.5:1389
3348 #, no-wrap
3349 msgid "I<.note.GNU-stack>"
3350 msgstr ""
3351
3352 #. type: Plain text
3353 #: build/C/man5/elf.5:1398
3354 msgid ""
3355 "This section is used in Linux object files for declaring stack attributes.  "
3356 "This section is of type B<SHT_PROGBITS>.  The only attribute used is "
3357 "B<SHF_EXECINSTR>.  This indicates to the GNU linker that the object file "
3358 "requires an executable stack."
3359 msgstr ""
3360
3361 #. type: TP
3362 #: build/C/man5/elf.5:1398
3363 #, no-wrap
3364 msgid "I<.plt>"
3365 msgstr ""
3366
3367 #. type: Plain text
3368 #: build/C/man5/elf.5:1404
3369 msgid ""
3370 "This section holds the procedure linkage table.  This section is of type "
3371 "B<SHT_PROGBITS>.  The attributes are processor-specific."
3372 msgstr ""
3373
3374 #. type: TP
3375 #: build/C/man5/elf.5:1404
3376 #, no-wrap
3377 msgid "I<.relNAME>"
3378 msgstr ""
3379
3380 #. type: Plain text
3381 #: build/C/man5/elf.5:1423
3382 msgid ""
3383 "This section holds relocation information as described below.  If the file "
3384 "has a loadable segment that includes relocation, the section's attributes "
3385 "will include the B<SHF_ALLOC> bit.  Otherwise, the bit will be off.  By "
3386 "convention, \"NAME\" is supplied by the section to which the relocations "
3387 "apply.  Thus a relocation section for B<.text> normally would have the name "
3388 "B<.rel.text>.  This section is of type B<SHT_REL>."
3389 msgstr ""
3390
3391 #. type: TP
3392 #: build/C/man5/elf.5:1423
3393 #, no-wrap
3394 msgid "I<.relaNAME>"
3395 msgstr ""
3396
3397 #. type: Plain text
3398 #: build/C/man5/elf.5:1442
3399 msgid ""
3400 "This section holds relocation information as described below.  If the file "
3401 "has a loadable segment that includes relocation, the section's attributes "
3402 "will include the B<SHF_ALLOC> bit.  Otherwise, the bit will be off.  By "
3403 "convention, \"NAME\" is supplied by the section to which the relocations "
3404 "apply.  Thus a relocation section for B<.text> normally would have the name "
3405 "B<.rela.text>.  This section is of type B<SHT_RELA>."
3406 msgstr ""
3407
3408 #. type: TP
3409 #: build/C/man5/elf.5:1442
3410 #, no-wrap
3411 msgid "I<.rodata>"
3412 msgstr ""
3413
3414 #. type: Plain text
3415 #: build/C/man5/elf.5:1450 build/C/man5/elf.5:1458
3416 msgid ""
3417 "This section holds read-only data that typically contributes to a "
3418 "nonwritable segment in the process image.  This section is of type "
3419 "B<SHT_PROGBITS>.  The attribute used is B<SHF_ALLOC>."
3420 msgstr ""
3421
3422 #. type: TP
3423 #: build/C/man5/elf.5:1450
3424 #, no-wrap
3425 msgid "I<.rodata1>"
3426 msgstr ""
3427
3428 #. type: TP
3429 #: build/C/man5/elf.5:1458
3430 #, no-wrap
3431 msgid "I<.shstrtab>"
3432 msgstr ""
3433
3434 #. type: Plain text
3435 #: build/C/man5/elf.5:1464
3436 msgid ""
3437 "This section holds section names.  This section is of type B<SHT_STRTAB>.  "
3438 "No attribute types are used."
3439 msgstr ""
3440
3441 #. type: TP
3442 #: build/C/man5/elf.5:1464
3443 #, no-wrap
3444 msgid "I<.strtab>"
3445 msgstr ""
3446
3447 #. type: Plain text
3448 #: build/C/man5/elf.5:1476
3449 msgid ""
3450 "This section holds strings, most commonly the strings that represent the "
3451 "names associated with symbol table entries.  If the file has a loadable "
3452 "segment that includes the symbol string table, the section's attributes will "
3453 "include the B<SHF_ALLOC> bit.  Otherwise, the bit will be off.  This section "
3454 "is of type B<SHT_STRTAB>."
3455 msgstr ""
3456
3457 #. type: TP
3458 #: build/C/man5/elf.5:1476
3459 #, no-wrap
3460 msgid "I<.symtab>"
3461 msgstr ""
3462
3463 #. type: Plain text
3464 #: build/C/man5/elf.5:1487
3465 msgid ""
3466 "This section holds a symbol table.  If the file has a loadable segment that "
3467 "includes the symbol table, the section's attributes will include the "
3468 "B<SHF_ALLOC> bit.  Otherwise, the bit will be off.  This section is of type "
3469 "B<SHT_SYMTAB>."
3470 msgstr ""
3471
3472 #. type: TP
3473 #: build/C/man5/elf.5:1487
3474 #, no-wrap
3475 msgid "I<.text>"
3476 msgstr ""
3477
3478 #.  .El
3479 #. type: Plain text
3480 #: build/C/man5/elf.5:1499
3481 msgid ""
3482 "This section holds the \"text\", or executable instructions, of a program.  "
3483 "This section is of type B<SHT_PROGBITS>.  The attributes used are "
3484 "B<SHF_ALLOC> and B<SHF_EXECINSTR>."
3485 msgstr ""
3486
3487 #. type: Plain text
3488 #: build/C/man5/elf.5:1510
3489 msgid ""
3490 "String table sections hold null-terminated character sequences, commonly "
3491 "called strings.  The object file uses these strings to represent symbol and "
3492 "section names.  One references a string as an index into the string table "
3493 "section.  The first byte, which is index zero, is defined to hold a null "
3494 "byte (\\(aq\\e0\\(aq).  Similarly, a string table's last byte is defined to "
3495 "hold a null byte, ensuring null termination for all strings."
3496 msgstr ""
3497
3498 #. type: Plain text
3499 #: build/C/man5/elf.5:1515
3500 msgid ""
3501 "An object file's symbol table holds information needed to locate and "
3502 "relocate a program's symbolic definitions and references.  A symbol table "
3503 "index is a subscript into this array."
3504 msgstr ""
3505
3506 #. type: Plain text
3507 #: build/C/man5/elf.5:1526
3508 #, no-wrap
3509 msgid ""
3510 "typedef struct {\n"
3511 "    uint32_t      st_name;\n"
3512 "    Elf32_Addr    st_value;\n"
3513 "    uint32_t      st_size;\n"
3514 "    unsigned char st_info;\n"
3515 "    unsigned char st_other;\n"
3516 "    uint16_t      st_shndx;\n"
3517 "} Elf32_Sym;\n"
3518 msgstr ""
3519
3520 #. type: Plain text
3521 #: build/C/man5/elf.5:1539
3522 #, no-wrap
3523 msgid ""
3524 "typedef struct {\n"
3525 "    uint32_t      st_name;\n"
3526 "    unsigned char st_info;\n"
3527 "    unsigned char st_other;\n"
3528 "    uint16_t      st_shndx;\n"
3529 "    Elf64_Addr    st_value;\n"
3530 "    uint64_t      st_size;\n"
3531 "} Elf64_Sym;\n"
3532 msgstr ""
3533
3534 #.  .Bl -tag -width "st_value"
3535 #. type: Plain text
3536 #: build/C/man5/elf.5:1545
3537 msgid ""
3538 "The 32-bit and 64-bit versions have the same members, just in a different "
3539 "order."
3540 msgstr ""
3541
3542 #. type: TP
3543 #: build/C/man5/elf.5:1545
3544 #, no-wrap
3545 msgid "I<st_name>"
3546 msgstr ""
3547
3548 #. type: Plain text
3549 #: build/C/man5/elf.5:1553
3550 msgid ""
3551 "This member holds an index into the object file's symbol string table, which "
3552 "holds character representations of the symbol names.  If the value is "
3553 "nonzero, it represents a string table index that gives the symbol name.  "
3554 "Otherwise, the symbol table has no name."
3555 msgstr ""
3556
3557 #. type: TP
3558 #: build/C/man5/elf.5:1553
3559 #, no-wrap
3560 msgid "I<st_value>"
3561 msgstr ""
3562
3563 #. type: Plain text
3564 #: build/C/man5/elf.5:1556
3565 msgid "This member gives the value of the associated symbol."
3566 msgstr ""
3567
3568 #. type: TP
3569 #: build/C/man5/elf.5:1556
3570 #, no-wrap
3571 msgid "I<st_size>"
3572 msgstr ""
3573
3574 #. type: Plain text
3575 #: build/C/man5/elf.5:1561
3576 msgid ""
3577 "Many symbols have associated sizes.  This member holds zero if the symbol "
3578 "has no size or an unknown size."
3579 msgstr ""
3580
3581 #. type: TP
3582 #: build/C/man5/elf.5:1561
3583 #, no-wrap
3584 msgid "I<st_info>"
3585 msgstr ""
3586
3587 #.  .Bl -tag -width "STT_SECTION"
3588 #. type: Plain text
3589 #: build/C/man5/elf.5:1565
3590 msgid "This member specifies the symbol's type and binding attributes:"
3591 msgstr ""
3592
3593 #. type: TP
3594 #: build/C/man5/elf.5:1566
3595 #, no-wrap
3596 msgid "B<STT_NOTYPE>"
3597 msgstr ""
3598
3599 #. type: Plain text
3600 #: build/C/man5/elf.5:1569
3601 msgid "The symbol's type is not defined."
3602 msgstr ""
3603
3604 #. type: TP
3605 #: build/C/man5/elf.5:1569
3606 #, no-wrap
3607 msgid "B<STT_OBJECT>"
3608 msgstr ""
3609
3610 #. type: Plain text
3611 #: build/C/man5/elf.5:1572
3612 msgid "The symbol is associated with a data object."
3613 msgstr ""
3614
3615 #. type: TP
3616 #: build/C/man5/elf.5:1572
3617 #, no-wrap
3618 msgid "B<STT_FUNC>"
3619 msgstr ""
3620
3621 #. type: Plain text
3622 #: build/C/man5/elf.5:1575
3623 msgid "The symbol is associated with a function or other executable code."
3624 msgstr ""
3625
3626 #. type: TP
3627 #: build/C/man5/elf.5:1575
3628 #, no-wrap
3629 msgid "B<STT_SECTION>"
3630 msgstr ""
3631
3632 #. type: Plain text
3633 #: build/C/man5/elf.5:1582
3634 msgid ""
3635 "The symbol is associated with a section.  Symbol table entries of this type "
3636 "exist primarily for relocation and normally have B<STB_LOCAL> bindings."
3637 msgstr ""
3638
3639 #. type: TP
3640 #: build/C/man5/elf.5:1582
3641 #, no-wrap
3642 msgid "B<STT_FILE>"
3643 msgstr ""
3644
3645 #. type: Plain text
3646 #: build/C/man5/elf.5:1593
3647 msgid ""
3648 "By convention, the symbol's name gives the name of the source file "
3649 "associated with the object file.  A file symbol has B<STB_LOCAL> bindings, "
3650 "its section index is B<SHN_ABS>, and it precedes the other B<STB_LOCAL> "
3651 "symbols of the file, if it is present."
3652 msgstr ""
3653
3654 #. type: TP
3655 #: build/C/man5/elf.5:1593
3656 #, no-wrap
3657 msgid "B<STT_LOPROC>"
3658 msgstr ""
3659
3660 #. type: Plain text
3661 #: build/C/man5/elf.5:1598
3662 msgid ""
3663 "This value up to and including B<STT_HIPROC> is reserved for "
3664 "processor-specific semantics."
3665 msgstr ""
3666
3667 #. type: TP
3668 #: build/C/man5/elf.5:1598
3669 #, no-wrap
3670 msgid "B<STT_HIPROC>"
3671 msgstr ""
3672
3673 #.  .El
3674 #.  .Bl -tag -width "STB_GLOBAL"
3675 #. type: Plain text
3676 #: build/C/man5/elf.5:1605
3677 msgid ""
3678 "This value down to and including B<STT_LOPROC> is reserved for "
3679 "processor-specific semantics."
3680 msgstr ""
3681
3682 #. type: TP
3683 #: build/C/man5/elf.5:1605
3684 #, no-wrap
3685 msgid "B<STB_LOCAL>"
3686 msgstr ""
3687
3688 #. type: Plain text
3689 #: build/C/man5/elf.5:1611
3690 msgid ""
3691 "Local symbols are not visible outside the object file containing their "
3692 "definition.  Local symbols of the same name may exist in multiple files "
3693 "without interfering with each other."
3694 msgstr ""
3695
3696 #. type: TP
3697 #: build/C/man5/elf.5:1611
3698 #, no-wrap
3699 msgid "B<STB_GLOBAL>"
3700 msgstr ""
3701
3702 #. type: Plain text
3703 #: build/C/man5/elf.5:1617
3704 msgid ""
3705 "Global symbols are visible to all object files being combined.  One file's "
3706 "definition of a global symbol will satisfy another file's undefined "
3707 "reference to the same symbol."
3708 msgstr ""
3709
3710 #. type: TP
3711 #: build/C/man5/elf.5:1617
3712 #, no-wrap
3713 msgid "B<STB_WEAK>"
3714 msgstr ""
3715
3716 #. type: Plain text
3717 #: build/C/man5/elf.5:1621
3718 msgid ""
3719 "Weak symbols resemble global symbols, but their definitions have lower "
3720 "precedence."
3721 msgstr ""
3722
3723 #. type: TP
3724 #: build/C/man5/elf.5:1621
3725 #, no-wrap
3726 msgid "B<STB_LOPROC>"
3727 msgstr ""
3728
3729 #. type: Plain text
3730 #: build/C/man5/elf.5:1626
3731 msgid ""
3732 "This value up to and including B<STB_HIPROC> is reserved for "
3733 "processor-specific semantics."
3734 msgstr ""
3735
3736 #. type: TP
3737 #: build/C/man5/elf.5:1626
3738 #, no-wrap
3739 msgid "B<STB_HIPROC>"
3740 msgstr ""
3741
3742 #. type: Plain text
3743 #: build/C/man5/elf.5:1631
3744 msgid ""
3745 "This value down to and including B<STB_LOPROC> is reserved for "
3746 "processor-specific semantics."
3747 msgstr ""
3748
3749 #. type: Plain text
3750 #: build/C/man5/elf.5:1633
3751 msgid "There are macros for packing and unpacking the binding and type fields:"
3752 msgstr ""
3753
3754 #. type: Plain text
3755 #: build/C/man5/elf.5:1640
3756 msgid ""
3757 "B<ELF32_ST_BIND>(info)  or B<ELF64_ST_BIND>(info)  extract a binding from an "
3758 "I<st_info> value."
3759 msgstr ""
3760
3761 #. type: Plain text
3762 #: build/C/man5/elf.5:1644
3763 msgid "B<ELF32_ST_TYPE>(info)  or B<ELF64_ST_TYPE>(info)"
3764 msgstr ""
3765
3766 #. type: Plain text
3767 #: build/C/man5/elf.5:1648
3768 msgid "extract a type from an I<st_info> value."
3769 msgstr ""
3770
3771 #. type: Plain text
3772 #: build/C/man5/elf.5:1652
3773 msgid "B<ELF32_ST_INFO>(bind, type)  or B<ELF64_ST_INFO>(bind, type)"
3774 msgstr ""
3775
3776 #. type: Plain text
3777 #: build/C/man5/elf.5:1656
3778 msgid "convert a binding and a type into an I<st_info> value."
3779 msgstr ""
3780
3781 #. type: TP
3782 #: build/C/man5/elf.5:1658
3783 #, no-wrap
3784 msgid "I<st_other>"
3785 msgstr ""
3786
3787 #.  .Bl -tag -width "STV_PROTECTED"
3788 #. type: Plain text
3789 #: build/C/man5/elf.5:1662
3790 msgid "This member defines the symbol visibility."
3791 msgstr ""
3792
3793 #. type: TP
3794 #: build/C/man5/elf.5:1663
3795 #, no-wrap
3796 msgid "B<STV_DEFAULT>"
3797 msgstr ""
3798
3799 #. type: Plain text
3800 #: build/C/man5/elf.5:1667
3801 msgid "Default symbol visibility rules."
3802 msgstr ""
3803
3804 #. type: TP
3805 #: build/C/man5/elf.5:1667
3806 #, no-wrap
3807 msgid "B<STV_INTERNAL>"
3808 msgstr ""
3809
3810 #. type: Plain text
3811 #: build/C/man5/elf.5:1670
3812 msgid "Processor-specific hidden class."
3813 msgstr ""
3814
3815 #. type: TP
3816 #: build/C/man5/elf.5:1670
3817 #, no-wrap
3818 msgid "B<STV_HIDDEN>"
3819 msgstr ""
3820
3821 #. type: Plain text
3822 #: build/C/man5/elf.5:1673
3823 msgid "Symbol is unavailable in other modules."
3824 msgstr ""
3825
3826 #. type: TP
3827 #: build/C/man5/elf.5:1673
3828 #, no-wrap
3829 msgid "B<STV_PROTECTED>"
3830 msgstr ""
3831
3832 #. type: Plain text
3833 #: build/C/man5/elf.5:1676
3834 msgid "Not preemptible, not exported."
3835 msgstr ""
3836
3837 #. type: Plain text
3838 #: build/C/man5/elf.5:1679
3839 msgid "There are macros for extracting the visibility type:"
3840 msgstr ""
3841
3842 #. type: Plain text
3843 #: build/C/man5/elf.5:1683
3844 msgid "B<ELF32_ST_VISIBILITY>(other)  or B<ELF64_ST_VISIBILITY>(other)"
3845 msgstr ""
3846
3847 #. type: TP
3848 #: build/C/man5/elf.5:1685
3849 #, no-wrap
3850 msgid "I<st_shndx>"
3851 msgstr ""
3852
3853 #.  .El
3854 #. type: Plain text
3855 #: build/C/man5/elf.5:1693
3856 msgid ""
3857 "Every symbol table entry is \"defined\" in relation to some section.  This "
3858 "member holds the relevant section header table index."
3859 msgstr ""
3860
3861 #. type: Plain text
3862 #: build/C/man5/elf.5:1701
3863 msgid ""
3864 "Relocation is the process of connecting symbolic references with symbolic "
3865 "definitions.  Relocatable files must have information that describes how to "
3866 "modify their section contents, thus allowing executable and shared object "
3867 "files to hold the right information for a process's program image.  "
3868 "Relocation entries are these data."
3869 msgstr ""
3870
3871 #. type: Plain text
3872 #: build/C/man5/elf.5:1703
3873 msgid "Relocation structures that do not need an addend:"
3874 msgstr ""
3875
3876 #. type: Plain text
3877 #: build/C/man5/elf.5:1710
3878 #, no-wrap
3879 msgid ""
3880 "typedef struct {\n"
3881 "    Elf32_Addr r_offset;\n"
3882 "    uint32_t   r_info;\n"
3883 "} Elf32_Rel;\n"
3884 msgstr ""
3885
3886 #. type: Plain text
3887 #: build/C/man5/elf.5:1719
3888 #, no-wrap
3889 msgid ""
3890 "typedef struct {\n"
3891 "    Elf64_Addr r_offset;\n"
3892 "    uint64_t   r_info;\n"
3893 "} Elf64_Rel;\n"
3894 msgstr ""
3895
3896 #. type: Plain text
3897 #: build/C/man5/elf.5:1723
3898 msgid "Relocation structures that need an addend:"
3899 msgstr ""
3900
3901 #. type: Plain text
3902 #: build/C/man5/elf.5:1731
3903 #, no-wrap
3904 msgid ""
3905 "typedef struct {\n"
3906 "    Elf32_Addr r_offset;\n"
3907 "    uint32_t   r_info;\n"
3908 "    int32_t    r_addend;\n"
3909 "} Elf32_Rela;\n"
3910 msgstr ""
3911
3912 #. type: Plain text
3913 #: build/C/man5/elf.5:1741
3914 #, no-wrap
3915 msgid ""
3916 "typedef struct {\n"
3917 "    Elf64_Addr r_offset;\n"
3918 "    uint64_t   r_info;\n"
3919 "    int64_t    r_addend;\n"
3920 "} Elf64_Rela;\n"
3921 msgstr ""
3922
3923 #. type: TP
3924 #: build/C/man5/elf.5:1744
3925 #, no-wrap
3926 msgid "I<r_offset>"
3927 msgstr ""
3928
3929 #. type: Plain text
3930 #: build/C/man5/elf.5:1752
3931 msgid ""
3932 "This member gives the location at which to apply the relocation action.  For "
3933 "a relocatable file, the value is the byte offset from the beginning of the "
3934 "section to the storage unit affected by the relocation.  For an executable "
3935 "file or shared object, the value is the virtual address of the storage unit "
3936 "affected by the relocation."
3937 msgstr ""
3938
3939 #. type: TP
3940 #: build/C/man5/elf.5:1752
3941 #, no-wrap
3942 msgid "I<r_info>"
3943 msgstr ""
3944
3945 #. type: Plain text
3946 #: build/C/man5/elf.5:1767
3947 msgid ""
3948 "This member gives both the symbol table index with respect to which the "
3949 "relocation must be made and the type of relocation to apply.  Relocation "
3950 "types are processor-specific.  When the text refers to a relocation entry's "
3951 "relocation type or symbol table index, it means the result of applying "
3952 "B<ELF[32|64]_R_TYPE> or B<ELF[32|64]_R_SYM>, respectively, to the entry's "
3953 "I<r_info> member."
3954 msgstr ""
3955
3956 #. type: TP
3957 #: build/C/man5/elf.5:1767
3958 #, no-wrap
3959 msgid "I<r_addend>"
3960 msgstr ""
3961
3962 #.  .El
3963 #. type: Plain text
3964 #: build/C/man5/elf.5:1772
3965 msgid ""
3966 "This member specifies a constant addend used to compute the value to be "
3967 "stored into the relocatable field."
3968 msgstr ""
3969
3970 #. type: Plain text
3971 #: build/C/man5/elf.5:1777
3972 msgid ""
3973 "The .dynamic section contains a series of structures that hold relevant "
3974 "dynamic linking information.  The d_tag member controls the interpretation "
3975 "of d_un."
3976 msgstr ""
3977
3978 #. type: Plain text
3979 #: build/C/man5/elf.5:1788
3980 #, no-wrap
3981 msgid ""
3982 "typedef struct {\n"
3983 "    Elf32_Sword    d_tag;\n"
3984 "    union {\n"
3985 "        Elf32_Word d_val;\n"
3986 "        Elf32_Addr d_ptr;\n"
3987 "    } d_un;\n"
3988 "} Elf32_Dyn;\n"
3989 "extern Elf32_Dyn _DYNAMIC[];\n"
3990 msgstr ""
3991
3992 #. type: Plain text
3993 #: build/C/man5/elf.5:1801
3994 #, no-wrap
3995 msgid ""
3996 "typedef struct {\n"
3997 "    Elf64_Sxword    d_tag;\n"
3998 "    union {\n"
3999 "        Elf64_Xword d_val;\n"
4000 "        Elf64_Addr  d_ptr;\n"
4001 "    } d_un;\n"
4002 "} Elf64_Dyn;\n"
4003 "extern Elf64_Dyn _DYNAMIC[];\n"
4004 msgstr ""
4005
4006 #. type: TP
4007 #: build/C/man5/elf.5:1804
4008 #, no-wrap
4009 msgid "I<d_tag>"
4010 msgstr ""
4011
4012 #.  .Bl -tag -width "DT_SYMBOLIC"
4013 #. type: Plain text
4014 #: build/C/man5/elf.5:1808
4015 msgid "This member may have any of the following values:"
4016 msgstr ""
4017
4018 #. type: TP
4019 #: build/C/man5/elf.5:1809
4020 #, no-wrap
4021 msgid "B<DT_NULL>"
4022 msgstr ""
4023
4024 #. type: Plain text
4025 #: build/C/man5/elf.5:1812
4026 msgid "Marks end of dynamic section"
4027 msgstr ""
4028
4029 #. type: TP
4030 #: build/C/man5/elf.5:1812
4031 #, no-wrap
4032 msgid "B<DT_NEEDED>"
4033 msgstr ""
4034
4035 #. type: Plain text
4036 #: build/C/man5/elf.5:1815
4037 msgid "String table offset to name of a needed library"
4038 msgstr ""
4039
4040 #. type: TP
4041 #: build/C/man5/elf.5:1815
4042 #, no-wrap
4043 msgid "B<DT_PLTRELSZ>"
4044 msgstr ""
4045
4046 #. type: Plain text
4047 #: build/C/man5/elf.5:1818
4048 msgid "Size in bytes of PLT relocs"
4049 msgstr ""
4050
4051 #. type: TP
4052 #: build/C/man5/elf.5:1818
4053 #, no-wrap
4054 msgid "B<DT_PLTGOT>"
4055 msgstr ""
4056
4057 #. type: Plain text
4058 #: build/C/man5/elf.5:1821
4059 msgid "Address of PLT and/or GOT"
4060 msgstr ""
4061
4062 #. type: TP
4063 #: build/C/man5/elf.5:1821
4064 #, no-wrap
4065 msgid "B<DT_HASH>"
4066 msgstr ""
4067
4068 #. type: Plain text
4069 #: build/C/man5/elf.5:1824
4070 msgid "Address of symbol hash table"
4071 msgstr ""
4072
4073 #. type: TP
4074 #: build/C/man5/elf.5:1824
4075 #, no-wrap
4076 msgid "B<DT_STRTAB>"
4077 msgstr ""
4078
4079 #. type: Plain text
4080 #: build/C/man5/elf.5:1827
4081 msgid "Address of string table"
4082 msgstr ""
4083
4084 #. type: TP
4085 #: build/C/man5/elf.5:1827
4086 #, no-wrap
4087 msgid "B<DT_SYMTAB>"
4088 msgstr ""
4089
4090 #. type: Plain text
4091 #: build/C/man5/elf.5:1830
4092 msgid "Address of symbol table"
4093 msgstr ""
4094
4095 #. type: TP
4096 #: build/C/man5/elf.5:1830
4097 #, no-wrap
4098 msgid "B<DT_RELA>"
4099 msgstr ""
4100
4101 #. type: Plain text
4102 #: build/C/man5/elf.5:1833
4103 msgid "Address of Rela relocs table"
4104 msgstr ""
4105
4106 #. type: TP
4107 #: build/C/man5/elf.5:1833
4108 #, no-wrap
4109 msgid "B<DT_RELASZ>"
4110 msgstr ""
4111
4112 #. type: Plain text
4113 #: build/C/man5/elf.5:1836
4114 msgid "Size in bytes of Rela table"
4115 msgstr ""
4116
4117 #. type: TP
4118 #: build/C/man5/elf.5:1836
4119 #, no-wrap
4120 msgid "B<DT_RELAENT>"
4121 msgstr ""
4122
4123 #. type: Plain text
4124 #: build/C/man5/elf.5:1839
4125 msgid "Size in bytes of a Rela table entry"
4126 msgstr ""
4127
4128 #. type: TP
4129 #: build/C/man5/elf.5:1839
4130 #, no-wrap
4131 msgid "B<DT_STRSZ>"
4132 msgstr ""
4133
4134 #. type: Plain text
4135 #: build/C/man5/elf.5:1842
4136 msgid "Size in bytes of string table"
4137 msgstr ""
4138
4139 #. type: TP
4140 #: build/C/man5/elf.5:1842
4141 #, no-wrap
4142 msgid "B<DT_SYMENT>"
4143 msgstr ""
4144
4145 #. type: Plain text
4146 #: build/C/man5/elf.5:1845
4147 msgid "Size in bytes of a symbol table entry"
4148 msgstr ""
4149
4150 #. type: TP
4151 #: build/C/man5/elf.5:1845
4152 #, no-wrap
4153 msgid "B<DT_INIT>"
4154 msgstr ""
4155
4156 #. type: Plain text
4157 #: build/C/man5/elf.5:1848
4158 msgid "Address of the initialization function"
4159 msgstr ""
4160
4161 #. type: TP
4162 #: build/C/man5/elf.5:1848
4163 #, no-wrap
4164 msgid "B<DT_FINI>"
4165 msgstr ""
4166
4167 #. type: Plain text
4168 #: build/C/man5/elf.5:1851
4169 msgid "Address of the termination function"
4170 msgstr ""
4171
4172 #. type: TP
4173 #: build/C/man5/elf.5:1851
4174 #, no-wrap
4175 msgid "B<DT_SONAME>"
4176 msgstr ""
4177
4178 #. type: Plain text
4179 #: build/C/man5/elf.5:1854
4180 msgid "String table offset to name of shared object"
4181 msgstr ""
4182
4183 #. type: TP
4184 #: build/C/man5/elf.5:1854
4185 #, no-wrap
4186 msgid "B<DT_RPATH>"
4187 msgstr ""
4188
4189 #. type: Plain text
4190 #: build/C/man5/elf.5:1857
4191 msgid "String table offset to library search path (deprecated)"
4192 msgstr ""
4193
4194 #. type: TP
4195 #: build/C/man5/elf.5:1857
4196 #, no-wrap
4197 msgid "B<DT_SYMBOLIC>"
4198 msgstr ""
4199
4200 #. type: Plain text
4201 #: build/C/man5/elf.5:1860
4202 msgid "Alert linker to search this shared object before the executable for symbols"
4203 msgstr ""
4204
4205 #. type: TP
4206 #: build/C/man5/elf.5:1860
4207 #, no-wrap
4208 msgid "B<DT_REL>"
4209 msgstr ""
4210
4211 #. type: Plain text
4212 #: build/C/man5/elf.5:1863
4213 msgid "Address of Rel relocs table"
4214 msgstr ""
4215
4216 #. type: TP
4217 #: build/C/man5/elf.5:1863
4218 #, no-wrap
4219 msgid "B<DT_RELSZ>"
4220 msgstr ""
4221
4222 #. type: Plain text
4223 #: build/C/man5/elf.5:1866
4224 msgid "Size in bytes of Rel table"
4225 msgstr ""
4226
4227 #. type: TP
4228 #: build/C/man5/elf.5:1866
4229 #, no-wrap
4230 msgid "B<DT_RELENT>"
4231 msgstr ""
4232
4233 #. type: Plain text
4234 #: build/C/man5/elf.5:1869
4235 msgid "Size in bytes of a Rel table entry"
4236 msgstr ""
4237
4238 #. type: TP
4239 #: build/C/man5/elf.5:1869
4240 #, no-wrap
4241 msgid "B<DT_PLTREL>"
4242 msgstr ""
4243
4244 #. type: Plain text
4245 #: build/C/man5/elf.5:1872
4246 msgid "Type of reloc the PLT refers (Rela or Rel)"
4247 msgstr ""
4248
4249 #. type: TP
4250 #: build/C/man5/elf.5:1872
4251 #, no-wrap
4252 msgid "B<DT_DEBUG>"
4253 msgstr ""
4254
4255 #. type: Plain text
4256 #: build/C/man5/elf.5:1875
4257 msgid "Undefined use for debugging"
4258 msgstr ""
4259
4260 #. type: TP
4261 #: build/C/man5/elf.5:1875
4262 #, no-wrap
4263 msgid "B<DT_TEXTREL>"
4264 msgstr ""
4265
4266 #. type: Plain text
4267 #: build/C/man5/elf.5:1878
4268 msgid "Absence of this indicates no relocs should apply to a nonwritable segment"
4269 msgstr ""
4270
4271 #. type: TP
4272 #: build/C/man5/elf.5:1878
4273 #, no-wrap
4274 msgid "B<DT_JMPREL>"
4275 msgstr ""
4276
4277 #. type: Plain text
4278 #: build/C/man5/elf.5:1881
4279 msgid "Address of reloc entries solely for the PLT"
4280 msgstr ""
4281
4282 #. type: TP
4283 #: build/C/man5/elf.5:1881
4284 #, no-wrap
4285 msgid "B<DT_BIND_NOW>"
4286 msgstr ""
4287
4288 #. type: Plain text
4289 #: build/C/man5/elf.5:1885
4290 msgid ""
4291 "Instruct dynamic linker to process all relocs before transferring control to "
4292 "the executable"
4293 msgstr ""
4294
4295 #. type: TP
4296 #: build/C/man5/elf.5:1885
4297 #, no-wrap
4298 msgid "B<DT_RUNPATH>"
4299 msgstr ""
4300
4301 #. type: Plain text
4302 #: build/C/man5/elf.5:1888
4303 msgid "String table offset to library search path"
4304 msgstr ""
4305
4306 #. type: TP
4307 #: build/C/man5/elf.5:1888
4308 #, no-wrap
4309 msgid "B<DT_LOPROC>"
4310 msgstr ""
4311
4312 #. type: Plain text
4313 #: build/C/man5/elf.5:1891
4314 msgid "Start of processor-specific semantics"
4315 msgstr ""
4316
4317 #. type: TP
4318 #: build/C/man5/elf.5:1891
4319 #, no-wrap
4320 msgid "B<DT_HIPROC>"
4321 msgstr ""
4322
4323 #. type: Plain text
4324 #: build/C/man5/elf.5:1894
4325 msgid "End of processor-specific semantics"
4326 msgstr ""
4327
4328 #. type: TP
4329 #: build/C/man5/elf.5:1896
4330 #, no-wrap
4331 msgid "I<d_val>"
4332 msgstr ""
4333
4334 #. type: Plain text
4335 #: build/C/man5/elf.5:1899
4336 msgid "This member represents integer values with various interpretations."
4337 msgstr ""
4338
4339 #. type: TP
4340 #: build/C/man5/elf.5:1899
4341 #, no-wrap
4342 msgid "I<d_ptr>"
4343 msgstr ""
4344
4345 #. type: Plain text
4346 #: build/C/man5/elf.5:1907
4347 msgid ""
4348 "This member represents program virtual addresses.  When interpreting these "
4349 "addresses, the actual address should be computed based on the original file "
4350 "value and memory base address.  Files do not contain relocation entries to "
4351 "fixup these addresses."
4352 msgstr ""
4353
4354 #. type: TP
4355 #: build/C/man5/elf.5:1907
4356 #, no-wrap
4357 msgid "I<_DYNAMIC>"
4358 msgstr ""
4359
4360 #.  .El
4361 #. type: Plain text
4362 #: build/C/man5/elf.5:1912
4363 msgid ""
4364 "Array containing all the dynamic structures in the .dynamic section.  This "
4365 "is automatically populated by the linker."
4366 msgstr ""
4367
4368 #.  OpenBSD
4369 #.  ELF support first appeared in
4370 #.  OpenBSD 1.2,
4371 #.  although not all supported platforms use it as the native
4372 #.  binary file format.
4373 #. type: Plain text
4374 #: build/C/man5/elf.5:1921
4375 msgid "ELF first appeared in System V.  The ELF format is an adopted standard."
4376 msgstr ""
4377
4378 #.  .SH AUTHORS
4379 #.  The original version of this manual page was written by
4380 #.  .An Jeroen Ruigrok van der Werven
4381 #.  .Aq asmodai@FreeBSD.org
4382 #.  with inspiration from BSDi's
4383 #.  .Bsx
4384 #.  .Nm elf
4385 #.  man page.
4386 #. type: Plain text
4387 #: build/C/man5/elf.5:1939
4388 msgid ""
4389 "The extensions for I<e_phnum>, I<e_shnum> and I<e_strndx> respectively are "
4390 "Linux extensions.  Sun, BSD and AMD64 also support them; for further "
4391 "information, look under SEE ALSO."
4392 msgstr ""
4393
4394 #. type: Plain text
4395 #: build/C/man5/elf.5:1946
4396 msgid "B<as>(1), B<gdb>(1), B<ld>(1), B<objdump>(1), B<execve>(2), B<core>(5)"
4397 msgstr ""
4398
4399 #. type: Plain text
4400 #: build/C/man5/elf.5:1949
4401 msgid "Hewlett-Packard, I<Elf-64 Object File Format>."
4402 msgstr ""
4403
4404 #. type: Plain text
4405 #: build/C/man5/elf.5:1952
4406 msgid "Santa Cruz Operation, I<System V Application Binary Interface>."
4407 msgstr ""
4408
4409 #. type: Plain text
4410 #: build/C/man5/elf.5:1956
4411 msgid ""
4412 "UNIX System Laboratories, \"Object Files\", I<Executable and Linking Format "
4413 "(ELF)>."
4414 msgstr ""
4415
4416 #. type: Plain text
4417 #: build/C/man5/elf.5:1959
4418 msgid "Sun Microsystems, I<Linker and Libraries Guide>."
4419 msgstr ""
4420
4421 #. type: Plain text
4422 #: build/C/man5/elf.5:1962
4423 msgid ""
4424 "AMD64 ABI Draft, I<System V Application Binary Interface AMD64 Architecture "
4425 "Processor Supplement>."
4426 msgstr ""
4427
4428 #. type: TH
4429 #: build/C/man3/end.3:26
4430 #, no-wrap
4431 msgid "END"
4432 msgstr ""
4433
4434 #. type: TH
4435 #: build/C/man3/end.3:26
4436 #, no-wrap
4437 msgid "2008-07-17"
4438 msgstr ""
4439
4440 #. type: Plain text
4441 #: build/C/man3/end.3:29
4442 msgid "etext, edata, end - end of program segments"
4443 msgstr ""
4444
4445 #. type: Plain text
4446 #: build/C/man3/end.3:34
4447 #, no-wrap
4448 msgid ""
4449 "B<extern>I< etext>B<;>\n"
4450 "B<extern>I< edata>B<;>\n"
4451 "B<extern>I< end>B<;>\n"
4452 msgstr ""
4453
4454 #. type: Plain text
4455 #: build/C/man3/end.3:38
4456 msgid "The addresses of these symbols indicate the end of various program segments:"
4457 msgstr ""
4458
4459 #. type: TP
4460 #: build/C/man3/end.3:38
4461 #, no-wrap
4462 msgid "I<etext>"
4463 msgstr ""
4464
4465 #. type: Plain text
4466 #: build/C/man3/end.3:42
4467 msgid ""
4468 "This is the first address past the end of the text segment (the program "
4469 "code)."
4470 msgstr ""
4471
4472 #. type: TP
4473 #: build/C/man3/end.3:42
4474 #, no-wrap
4475 msgid "I<edata>"
4476 msgstr ""
4477
4478 #. type: Plain text
4479 #: build/C/man3/end.3:46
4480 msgid "This is the first address past the end of the initialized data segment."
4481 msgstr ""
4482
4483 #. type: TP
4484 #: build/C/man3/end.3:46
4485 #, no-wrap
4486 msgid "I<end>"
4487 msgstr ""
4488
4489 #. type: Plain text
4490 #: build/C/man3/end.3:50
4491 msgid ""
4492 "This is the first address past the end of the uninitialized data segment "
4493 "(also known as the BSS segment)."
4494 msgstr ""
4495
4496 #. type: Plain text
4497 #: build/C/man3/end.3:53
4498 msgid ""
4499 "Although these symbols have long been provided on most UNIX systems, they "
4500 "are not standardized; use with caution."
4501 msgstr ""
4502
4503 #. type: Plain text
4504 #: build/C/man3/end.3:56
4505 msgid ""
4506 "The program must explicitly declare these symbols; they are not defined in "
4507 "any header file."
4508 msgstr ""
4509
4510 #. type: Plain text
4511 #: build/C/man3/end.3:64
4512 msgid ""
4513 "On some systems the names of these symbols are preceded by underscores, "
4514 "thus: I<_etext>, I<_edata>, and I<_end>.  These symbols are also defined for "
4515 "programs compiled on Linux."
4516 msgstr ""
4517
4518 #. type: Plain text
4519 #: build/C/man3/end.3:76
4520 msgid ""
4521 "At the start of program execution, the program break will be somewhere near "
4522 "I<&end> (perhaps at the start of the following page).  However, the break "
4523 "will change as memory is allocated via B<brk>(2)  or B<malloc>(3).  Use "
4524 "B<sbrk>(2)  with an argument of zero to find the current value of the "
4525 "program break."
4526 msgstr ""
4527
4528 #. type: Plain text
4529 #: build/C/man3/end.3:78
4530 msgid "When run, the program below produces output such as the following:"
4531 msgstr ""
4532
4533 #. type: Plain text
4534 #: build/C/man3/end.3:86
4535 #, no-wrap
4536 msgid ""
4537 "$B< ./a.out>\n"
4538 "First address past:\n"
4539 "    program text (etext)       0x8048568\n"
4540 "    initialized data (edata)   0x804a01c\n"
4541 "    uninitialized data (end)   0x804a024\n"
4542 msgstr ""
4543
4544 #. type: SS
4545 #: build/C/man3/end.3:88 build/C/man1/memusage.1:234
4546 #, no-wrap
4547 msgid "Program source"
4548 msgstr ""
4549
4550 #. type: Plain text
4551 #: build/C/man3/end.3:93 build/C/man1/memusage.1:238
4552 #, no-wrap
4553 msgid ""
4554 "#include E<lt>stdio.hE<gt>\n"
4555 "#include E<lt>stdlib.hE<gt>\n"
4556 msgstr ""
4557
4558 #. type: Plain text
4559 #: build/C/man3/end.3:96
4560 #, no-wrap
4561 msgid ""
4562 "extern char etext, edata, end; /* The symbols must have some type,\n"
4563 "                                   or \"gcc -Wall\" complains */\n"
4564 msgstr ""
4565
4566 #. type: Plain text
4567 #: build/C/man3/end.3:104
4568 #, no-wrap
4569 msgid ""
4570 "int\n"
4571 "main(int argc, char *argv[])\n"
4572 "{\n"
4573 "    printf(\"First address past:\\en\");\n"
4574 "    printf(\"    program text (etext)      %10p\\en\", &etext);\n"
4575 "    printf(\"    initialized data (edata)  %10p\\en\", &edata);\n"
4576 "    printf(\"    uninitialized data (end)  %10p\\en\", &end);\n"
4577 msgstr ""
4578
4579 #. type: Plain text
4580 #: build/C/man3/end.3:113
4581 msgid "B<objdump>(1), B<readelf>(1), B<sbrk>(2), B<elf>(5)"
4582 msgstr ""
4583
4584 #. type: TH
4585 #: build/C/man8/ld.so.8:5
4586 #, no-wrap
4587 msgid "LD.SO"
4588 msgstr ""
4589
4590 #. type: TH
4591 #: build/C/man8/ld.so.8:5
4592 #, no-wrap
4593 msgid "2014-12-31"
4594 msgstr ""
4595
4596 #. type: Plain text
4597 #: build/C/man8/ld.so.8:8
4598 msgid "ld.so, ld-linux.so* - dynamic linker/loader"
4599 msgstr ""
4600
4601 #. type: Plain text
4602 #: build/C/man8/ld.so.8:15
4603 msgid ""
4604 "The dynamic linker can be run either indirectly by running some dynamically "
4605 "linked program or library (in which case no command-line options to the "
4606 "dynamic linker can be passed and, in the ELF case, the dynamic linker which "
4607 "is stored in the B<.interp> section of the program is executed) or directly "
4608 "by running:"
4609 msgstr ""
4610
4611 #. type: Plain text
4612 #: build/C/man8/ld.so.8:18
4613 msgid "I</lib/ld-linux.so.*> [OPTIONS] [PROGRAM [ARGUMENTS]]"
4614 msgstr ""
4615
4616 #. type: Plain text
4617 #: build/C/man8/ld.so.8:25
4618 msgid ""
4619 "The programs B<ld.so> and B<ld-linux.so*> find and load the shared libraries "
4620 "needed by a program, prepare the program to run, and then run it."
4621 msgstr ""
4622
4623 #. type: Plain text
4624 #: build/C/man8/ld.so.8:32
4625 msgid ""
4626 "Linux binaries require dynamic linking (linking at run time)  unless the "
4627 "B<-static> option was given to B<ld>(1)  during compilation."
4628 msgstr ""
4629
4630 #. type: Plain text
4631 #: build/C/man8/ld.so.8:45
4632 msgid ""
4633 "The program B<ld.so> handles a.out binaries, a format used long ago; "
4634 "B<ld-linux.so*> handles ELF (I</lib/ld-linux.so.1> for libc5, "
4635 "I</lib/ld-linux.so.2> for glibc2), which everybody has been using for years "
4636 "now.  Otherwise, both have the same behavior, and use the same support files "
4637 "and programs B<ldd>(1), B<ldconfig>(8), and I</etc/ld.so.conf>."
4638 msgstr ""
4639
4640 #. type: Plain text
4641 #: build/C/man8/ld.so.8:53
4642 msgid ""
4643 "When resolving library dependencies, the dynamic linker first inspects each "
4644 "dependency string to see if it contains a slash (this can occur if a library "
4645 "pathname containing slashes was specified at link time).  If a slash is "
4646 "found, then the dependency string is interpreted as a (relative or absolute) "
4647 "pathname, and the library is loaded using that pathname."
4648 msgstr ""
4649
4650 #. type: Plain text
4651 #: build/C/man8/ld.so.8:56
4652 msgid ""
4653 "If a library dependency does not contain a slash, then it is searched for in "
4654 "the following order:"
4655 msgstr ""
4656
4657 #. type: Plain text
4658 #: build/C/man8/ld.so.8:61
4659 msgid ""
4660 "(ELF only) Using the directories specified in the DT_RPATH dynamic section "
4661 "attribute of the binary if present and DT_RUNPATH attribute does not exist.  "
4662 "Use of DT_RPATH is deprecated."
4663 msgstr ""
4664
4665 #. type: Plain text
4666 #: build/C/man8/ld.so.8:66
4667 msgid ""
4668 "Using the environment variable B<LD_LIBRARY_PATH>.  Except if the executable "
4669 "is a set-user-ID/set-group-ID binary, in which case it is ignored."
4670 msgstr ""
4671
4672 #. type: Plain text
4673 #: build/C/man8/ld.so.8:70
4674 msgid ""
4675 "(ELF only) Using the directories specified in the DT_RUNPATH dynamic section "
4676 "attribute of the binary if present."
4677 msgstr ""
4678
4679 #. type: Plain text
4680 #: build/C/man8/ld.so.8:80
4681 msgid ""
4682 "From the cache file I</etc/ld.so.cache>, which contains a compiled list of "
4683 "candidate libraries previously found in the augmented library path.  If, "
4684 "however, the binary was linked with the B<-z nodeflib> linker option, "
4685 "libraries in the default library paths are skipped.  Libraries installed in "
4686 "hardware capability directories (see below)  are preferred to other "
4687 "libraries."
4688 msgstr ""
4689
4690 #. type: Plain text
4691 #: build/C/man8/ld.so.8:88
4692 msgid ""
4693 "In the default path I</lib>, and then I</usr/lib>.  If the binary was linked "
4694 "with the B<-z nodeflib> linker option, this step is skipped."
4695 msgstr ""
4696
4697 #. type: SS
4698 #: build/C/man8/ld.so.8:88
4699 #, no-wrap
4700 msgid "Rpath token expansion"
4701 msgstr ""
4702
4703 #. type: Plain text
4704 #: build/C/man8/ld.so.8:92
4705 msgid ""
4706 "B<ld.so> understands certain strings in an rpath specification (DT_RPATH or "
4707 "DT_RUNPATH); those strings are substituted as follows"
4708 msgstr ""
4709
4710 #. type: TP
4711 #: build/C/man8/ld.so.8:92
4712 #, no-wrap
4713 msgid "I<$ORIGIN> (or equivalently I<${ORIGIN}>)"
4714 msgstr ""
4715
4716 #. type: Plain text
4717 #: build/C/man8/ld.so.8:99
4718 msgid ""
4719 "This expands to the directory containing the program or shared library.  "
4720 "Thus, an application located in I<somedir/app> could be compiled with"
4721 msgstr ""
4722
4723 #. type: Plain text
4724 #: build/C/man8/ld.so.8:101
4725 #, no-wrap
4726 msgid "    gcc -Wl,-rpath,\\(aq$ORIGIN/../lib\\(aq\n"
4727 msgstr ""
4728
4729 #. type: Plain text
4730 #: build/C/man8/ld.so.8:111
4731 msgid ""
4732 "so that it finds an associated shared library in I<somedir/lib> no matter "
4733 "where I<somedir> is located in the directory hierarchy.  This facilitates "
4734 "the creation of \"turn-key\" applications that do not need to be installed "
4735 "into special directories, but can instead be unpacked into any directory and "
4736 "still find their own shared libraries."
4737 msgstr ""
4738
4739 #. type: TP
4740 #: build/C/man8/ld.so.8:111
4741 #, no-wrap
4742 msgid "I<$LIB> (or equivalently I<${LIB}>)"
4743 msgstr ""
4744
4745 #. type: Plain text
4746 #: build/C/man8/ld.so.8:123
4747 msgid ""
4748 "This expands to I<lib> or I<lib64> depending on the architecture (e.g., on "
4749 "x86-64, it expands to I<lib64> and on x86-32, it expands to I<lib>)."
4750 msgstr ""
4751
4752 #. type: TP
4753 #: build/C/man8/ld.so.8:123
4754 #, no-wrap
4755 msgid "I<$PLATFORM> (or equivalently I<${PLATFORM}>)"
4756 msgstr ""
4757
4758 #.  To get an idea of the places that $PLATFORM would match,
4759 #.  look at the output of the following:
4760 #
4761 #.      mkdir /tmp/d
4762 #.      LD_LIBRARY_PATH=/tmp/d strace -e open /bin/date 2>&1 | grep /tmp/d
4763 #
4764 #.  ld.so lets names be abbreviated, so $O will work for $ORIGIN;
4765 #.  Don't do this!!
4766 #. type: Plain text
4767 #: build/C/man8/ld.so.8:141
4768 msgid ""
4769 "This expands to a string corresponding to the processor type of the host "
4770 "system (e.g., \"x86_64\").  On some architectures, the Linux kernel doesn't "
4771 "provide a platform string to the dynamic linker.  The value of this string "
4772 "is taken from the B<AT_PLATFORM> value in the auxiliary vector (see "
4773 "B<getauxval>(3))."
4774 msgstr ""
4775
4776 #. type: SH
4777 #: build/C/man8/ld.so.8:141 build/C/man8/ldconfig.8:100 build/C/man1/ldd.1:51 build/C/man1/memusage.1:135 build/C/man1/memusagestat.1:47 build/C/man1/mtrace.1:51 build/C/man1/pldd.1:40 build/C/man1/sprof.1:46
4778 #, no-wrap
4779 msgid "OPTIONS"
4780 msgstr ""
4781
4782 #. type: TP
4783 #: build/C/man8/ld.so.8:142
4784 #, no-wrap
4785 msgid "B<--list>"
4786 msgstr ""
4787
4788 #. type: Plain text
4789 #: build/C/man8/ld.so.8:145
4790 msgid "List all dependencies and how they are resolved."
4791 msgstr ""
4792
4793 #. type: TP
4794 #: build/C/man8/ld.so.8:145
4795 #, no-wrap
4796 msgid "B<--verify>"
4797 msgstr ""
4798
4799 #. type: Plain text
4800 #: build/C/man8/ld.so.8:149
4801 msgid ""
4802 "Verify that program is dynamically linked and this dynamic linker can handle "
4803 "it."
4804 msgstr ""
4805
4806 #. type: TP
4807 #: build/C/man8/ld.so.8:149
4808 #, no-wrap
4809 msgid "B<--inhibit-cache>"
4810 msgstr ""
4811
4812 #. type: Plain text
4813 #: build/C/man8/ld.so.8:152
4814 msgid "Do not use /etc/ld.so.cache."
4815 msgstr ""
4816
4817 #. type: TP
4818 #: build/C/man8/ld.so.8:152
4819 #, no-wrap
4820 msgid "B<--library-path PATH>"
4821 msgstr ""
4822
4823 #. type: Plain text
4824 #: build/C/man8/ld.so.8:157
4825 msgid ""
4826 "Use PATH instead of B<LD_LIBRARY_PATH> environment variable setting (see "
4827 "below)."
4828 msgstr ""
4829
4830 #. type: TP
4831 #: build/C/man8/ld.so.8:157
4832 #, no-wrap
4833 msgid "B<--inhibit-rpath LIST>"
4834 msgstr ""
4835
4836 #. type: Plain text
4837 #: build/C/man8/ld.so.8:163
4838 msgid ""
4839 "Ignore RPATH and RUNPATH information in object names in LIST.  This option "
4840 "is ignored if B<ld.so> is set-user-ID or set-group-ID."
4841 msgstr ""
4842
4843 #. type: TP
4844 #: build/C/man8/ld.so.8:163
4845 #, no-wrap
4846 msgid "B<--audit LIST>"
4847 msgstr ""
4848
4849 #. type: Plain text
4850 #: build/C/man8/ld.so.8:166
4851 msgid "Use objects named in LIST as auditors."
4852 msgstr ""
4853
4854 #. type: SH
4855 #: build/C/man8/ld.so.8:166
4856 #, no-wrap
4857 msgid "HARDWARE CAPABILITIES"
4858 msgstr ""
4859
4860 #. type: Plain text
4861 #: build/C/man8/ld.so.8:177
4862 msgid ""
4863 "Some libraries are compiled using hardware-specific instructions which do "
4864 "not exist on every CPU.  Such libraries should be installed in directories "
4865 "whose names define the required hardware capabilities, such as "
4866 "I</usr/lib/sse2/>.  The dynamic linker checks these directories against the "
4867 "hardware of the machine and selects the most suitable version of a given "
4868 "library.  Hardware capability directories can be cascaded to combine CPU "
4869 "features.  The list of supported hardware capability names depends on the "
4870 "CPU.  The following names are currently recognized:"
4871 msgstr ""
4872
4873 #. type: TP
4874 #: build/C/man8/ld.so.8:177
4875 #, no-wrap
4876 msgid "B<Alpha>"
4877 msgstr ""
4878
4879 #. type: Plain text
4880 #: build/C/man8/ld.so.8:180
4881 msgid "ev4, ev5, ev56, ev6, ev67"
4882 msgstr ""
4883
4884 #. type: TP
4885 #: build/C/man8/ld.so.8:180
4886 #, no-wrap
4887 msgid "B<MIPS>"
4888 msgstr ""
4889
4890 #. type: Plain text
4891 #: build/C/man8/ld.so.8:183
4892 msgid "loongson2e, loongson2f, octeon, octeon2"
4893 msgstr ""
4894
4895 #. type: TP
4896 #: build/C/man8/ld.so.8:183
4897 #, no-wrap
4898 msgid "B<PowerPC>"
4899 msgstr ""
4900
4901 #. type: Plain text
4902 #: build/C/man8/ld.so.8:188
4903 msgid ""
4904 "4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble, "
4905 "efpsingle, fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x, "
4906 "ppc32, ppc601, ppc64, smt, spe, ucache, vsx"
4907 msgstr ""
4908
4909 #. type: TP
4910 #: build/C/man8/ld.so.8:188
4911 #, no-wrap
4912 msgid "B<SPARC>"
4913 msgstr ""
4914
4915 #. type: Plain text
4916 #: build/C/man8/ld.so.8:191
4917 msgid "flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2"
4918 msgstr ""
4919
4920 #. type: TP
4921 #: build/C/man8/ld.so.8:191
4922 #, no-wrap
4923 msgid "B<s390>"
4924 msgstr ""
4925
4926 #. type: Plain text
4927 #: build/C/man8/ld.so.8:195
4928 msgid ""
4929 "dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, z900, "
4930 "z990, z9-109, z10, zarch"
4931 msgstr ""
4932
4933 #. type: TP
4934 #: build/C/man8/ld.so.8:195
4935 #, no-wrap
4936 msgid "B<x86 (32-bit only)>"
4937 msgstr ""
4938
4939 #. type: Plain text
4940 #: build/C/man8/ld.so.8:199
4941 msgid ""
4942 "acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, "
4943 "mmx, mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm"
4944 msgstr ""
4945
4946 #. type: SH
4947 #: build/C/man8/ld.so.8:199
4948 #, no-wrap
4949 msgid "ENVIRONMENT"
4950 msgstr ""
4951
4952 #. type: Plain text
4953 #: build/C/man8/ld.so.8:201
4954 msgid "Among the more important environment variables are the following:"
4955 msgstr ""
4956
4957 #. type: TP
4958 #: build/C/man8/ld.so.8:201
4959 #, no-wrap
4960 msgid "B<LD_ASSUME_KERNEL>"
4961 msgstr ""
4962
4963 #. type: Plain text
4964 #: build/C/man8/ld.so.8:214
4965 msgid ""
4966 "(glibc since 2.2.3)  Each shared library can inform the dynamic linker of "
4967 "the minimum kernel ABI version that it requires.  (This requirement is "
4968 "encoded in an ELF note section that is viewable via I<readelf\\ -n> as a "
4969 "section labeled B<NT_GNU_ABI_TAG>.)  At run time, the dynamic linker "
4970 "determines the ABI version of the running kernel and will reject loading "
4971 "shared libraries that specify minimum ABI versions that exceed that ABI "
4972 "version."
4973 msgstr ""
4974
4975 #. type: Plain text
4976 #: build/C/man8/ld.so.8:223
4977 msgid ""
4978 "B<LD_ASSUME_KERNEL> can be used to cause the dynamic linker to assume that "
4979 "it is running on a system with a different kernel ABI version.  For example, "
4980 "the following command line causes the dynamic linker to assume it is running "
4981 "on Linux 2.2.5 when loading the shared libraries required by I<myprog>:"
4982 msgstr ""
4983
4984 #. type: Plain text
4985 #: build/C/man8/ld.so.8:227
4986 #, no-wrap
4987 msgid "$ B<LD_ASSUME_KERNEL=2.2.5 ./myprog>\n"
4988 msgstr ""
4989
4990 #. type: Plain text
4991 #: build/C/man8/ld.so.8:244
4992 msgid ""
4993 "On systems that provide multiple versions of a shared library (in different "
4994 "directories in the search path) that have different minimum kernel ABI "
4995 "version requirements, B<LD_ASSUME_KERNEL> can be used to select the version "
4996 "of the library that is used (dependent on the directory search order).  "
4997 "Historically, the most common use of the B<LD_ASSUME_KERNEL> feature was to "
4998 "manually select the older LinuxThreads POSIX threads implementation on "
4999 "systems that provided both LinuxThreads and NPTL (which latter was typically "
5000 "the default on such systems); see B<pthreads>(7)."
5001 msgstr ""
5002
5003 #. type: TP
5004 #: build/C/man8/ld.so.8:244 build/C/man8/ld.so.8:325
5005 #, no-wrap
5006 msgid "B<LD_BIND_NOT>"
5007 msgstr ""
5008
5009 #. type: Plain text
5010 #: build/C/man8/ld.so.8:249
5011 msgid ""
5012 "(glibc since 2.2)  Don't update the Global Offset Table (GOT) and Procedure "
5013 "Linkage Table (PLT)  when resolving a symbol."
5014 msgstr ""
5015
5016 #. type: TP
5017 #: build/C/man8/ld.so.8:249
5018 #, no-wrap
5019 msgid "B<LD_BIND_NOW>"
5020 msgstr ""
5021
5022 #. type: Plain text
5023 #: build/C/man8/ld.so.8:257
5024 msgid ""
5025 "(libc5; glibc since 2.1.1)  If set to a nonempty string, causes the dynamic "
5026 "linker to resolve all symbols at program startup instead of deferring "
5027 "function call resolution to the point when they are first referenced.  This "
5028 "is useful when using a debugger."
5029 msgstr ""
5030
5031 #. type: TP
5032 #: build/C/man8/ld.so.8:257
5033 #, no-wrap
5034 msgid "B<LD_LIBRARY_PATH>"
5035 msgstr ""
5036
5037 #. type: Plain text
5038 #: build/C/man8/ld.so.8:265
5039 msgid ""
5040 "A colon-separated list of directories in which to search for ELF libraries "
5041 "at execution-time.  Similar to the B<PATH> environment variable.  Ignored in "
5042 "set-user-ID and set-group-ID programs."
5043 msgstr ""
5044
5045 #. type: TP
5046 #: build/C/man8/ld.so.8:265
5047 #, no-wrap
5048 msgid "B<LD_PRELOAD>"
5049 msgstr ""
5050
5051 #. type: Plain text
5052 #: build/C/man8/ld.so.8:276
5053 msgid ""
5054 "A list of additional, user-specified, ELF shared libraries to be loaded "
5055 "before all others.  The items of the list can be separated by spaces or "
5056 "colons.  This can be used to selectively override functions in other shared "
5057 "libraries.  The libraries are searched for using the rules given under "
5058 "DESCRIPTION.  For set-user-ID/set-group-ID ELF binaries, preload pathnames "
5059 "containing slashes are ignored, and libraries in the standard search "
5060 "directories are loaded only if the set-user-ID permission bit is enabled on "
5061 "the library file."
5062 msgstr ""
5063
5064 #. type: TP
5065 #: build/C/man8/ld.so.8:276
5066 #, no-wrap
5067 msgid "B<LD_TRACE_LOADED_OBJECTS>"
5068 msgstr ""
5069
5070 #. type: Plain text
5071 #: build/C/man8/ld.so.8:283
5072 msgid ""
5073 "(ELF only)  If set to a nonempty string, causes the program to list its "
5074 "dynamic library dependencies, as if run by B<ldd>(1), instead of running "
5075 "normally."
5076 msgstr ""
5077
5078 #. type: Plain text
5079 #: build/C/man8/ld.so.8:286
5080 msgid ""
5081 "Then there are lots of more or less obscure variables, many obsolete or only "
5082 "for internal use."
5083 msgstr ""
5084
5085 #. type: TP
5086 #: build/C/man8/ld.so.8:286
5087 #, no-wrap
5088 msgid "B<LD_AOUT_LIBRARY_PATH>"
5089 msgstr ""
5090
5091 #. type: Plain text
5092 #: build/C/man8/ld.so.8:294
5093 msgid ""
5094 "(libc5)  Version of B<LD_LIBRARY_PATH> for a.out binaries only.  Old "
5095 "versions of ld-linux.so.1 also supported B<LD_ELF_LIBRARY_PATH>."
5096 msgstr ""
5097
5098 #. type: TP
5099 #: build/C/man8/ld.so.8:294
5100 #, no-wrap
5101 msgid "B<LD_AOUT_PRELOAD>"
5102 msgstr ""
5103
5104 #. type: Plain text
5105 #: build/C/man8/ld.so.8:302
5106 msgid ""
5107 "(libc5)  Version of B<LD_PRELOAD> for a.out binaries only.  Old versions of "
5108 "ld-linux.so.1 also supported B<LD_ELF_PRELOAD>."
5109 msgstr ""
5110
5111 #. type: TP
5112 #: build/C/man8/ld.so.8:302
5113 #, no-wrap
5114 msgid "B<LD_AUDIT>"
5115 msgstr ""
5116
5117 #. type: Plain text
5118 #: build/C/man8/ld.so.8:312
5119 msgid ""
5120 "(glibc since 2.4)  A colon-separated list of user-specified, ELF shared "
5121 "objects to be loaded before all others in a separate linker namespace (i.e., "
5122 "one that does not intrude upon the normal symbol bindings that would occur "
5123 "in the process).  These libraries can be used to audit the operation of the "
5124 "dynamic linker.  B<LD_AUDIT> is ignored for set-user-ID/set-group-ID "
5125 "binaries."
5126 msgstr ""
5127
5128 #. type: Plain text
5129 #: build/C/man8/ld.so.8:325
5130 msgid ""
5131 "The dynamic linker will notify the audit libraries at so-called auditing "
5132 "checkpoints\\(emfor example, loading a new library, resolving a symbol, or "
5133 "calling a symbol from another shared object\\(emby calling an appropriate "
5134 "function within the audit library.  For details, see B<rtld-audit>(7).  The "
5135 "auditing interface is largely compatible with that provided on Solaris, as "
5136 "described in its I<Linker and Libraries Guide>, in the chapter I<Runtime "
5137 "Linker Auditing Interface>."
5138 msgstr ""
5139
5140 #. type: Plain text
5141 #: build/C/man8/ld.so.8:330
5142 msgid ""
5143 "(glibc since 2.1.95)  Do not update the GOT (global offset table) and PLT "
5144 "(procedure linkage table)  after resolving a symbol."
5145 msgstr ""
5146
5147 #. type: TP
5148 #: build/C/man8/ld.so.8:330
5149 #, no-wrap
5150 msgid "B<LD_DEBUG>"
5151 msgstr ""
5152
5153 #. type: Plain text
5154 #: build/C/man8/ld.so.8:343
5155 msgid ""
5156 "(glibc since 2.1)  Output verbose debugging information about the dynamic "
5157 "linker.  If set to B<all> prints all debugging information it has, if set to "
5158 "B<help> prints a help message about which categories can be specified in "
5159 "this environment variable.  Since glibc 2.3.4, B<LD_DEBUG> is ignored for "
5160 "set-user-ID/set-group-ID binaries."
5161 msgstr ""
5162
5163 #. type: TP
5164 #: build/C/man8/ld.so.8:343
5165 #, no-wrap
5166 msgid "B<LD_DEBUG_OUTPUT>"
5167 msgstr ""
5168
5169 #. type: Plain text
5170 #: build/C/man8/ld.so.8:352
5171 msgid ""
5172 "(glibc since 2.1)  File in which B<LD_DEBUG> output should be written.  The "
5173 "default is standard error.  B<LD_DEBUG_OUTPUT> is ignored for "
5174 "set-user-ID/set-group-ID binaries."
5175 msgstr ""
5176
5177 #. type: TP
5178 #: build/C/man8/ld.so.8:352
5179 #, no-wrap
5180 msgid "B<LD_DYNAMIC_WEAK>"
5181 msgstr ""
5182
5183 #. type: Plain text
5184 #: build/C/man8/ld.so.8:359
5185 msgid ""
5186 "(glibc since 2.1.91)  Allow weak symbols to be overridden (reverting to old "
5187 "glibc behavior).  For security reasons, since glibc 2.3.4, "
5188 "B<LD_DYNAMIC_WEAK> is ignored for set-user-ID/set-group-ID binaries."
5189 msgstr ""
5190
5191 #. type: TP
5192 #: build/C/man8/ld.so.8:359
5193 #, no-wrap
5194 msgid "B<LD_HWCAP_MASK>"
5195 msgstr ""
5196
5197 #. type: Plain text
5198 #: build/C/man8/ld.so.8:363
5199 msgid "(glibc since 2.1)  Mask for hardware capabilities."
5200 msgstr ""
5201
5202 #. type: TP
5203 #: build/C/man8/ld.so.8:363
5204 #, no-wrap
5205 msgid "B<LD_KEEPDIR>"
5206 msgstr ""
5207
5208 #. type: Plain text
5209 #: build/C/man8/ld.so.8:368
5210 msgid ""
5211 "(a.out only)(libc5)  Don't ignore the directory in the names of a.out "
5212 "libraries to be loaded.  Use of this option is strongly discouraged."
5213 msgstr ""
5214
5215 #. type: TP
5216 #: build/C/man8/ld.so.8:368
5217 #, no-wrap
5218 msgid "B<LD_NOWARN>"
5219 msgstr ""
5220
5221 #. type: Plain text
5222 #: build/C/man8/ld.so.8:373
5223 msgid ""
5224 "(a.out only)(libc5)  Suppress warnings about a.out libraries with "
5225 "incompatible minor version numbers."
5226 msgstr ""
5227
5228 #. type: TP
5229 #: build/C/man8/ld.so.8:373
5230 #, no-wrap
5231 msgid "B<LD_ORIGIN_PATH>"
5232 msgstr ""
5233
5234 #.  Only used if $ORIGIN can't be determined by normal means
5235 #.  (from the origin path saved at load time, or from /proc/self/exe)?
5236 #. type: Plain text
5237 #: build/C/man8/ld.so.8:382
5238 msgid ""
5239 "(glibc since 2.1)  Path where the binary is found (for non-set-user-ID "
5240 "programs).  For security reasons, since glibc 2.4, B<LD_ORIGIN_PATH> is "
5241 "ignored for set-user-ID/set-group-ID binaries."
5242 msgstr ""
5243
5244 #. type: TP
5245 #: build/C/man8/ld.so.8:382
5246 #, no-wrap
5247 msgid "B<LD_POINTER_GUARD>"
5248 msgstr ""
5249
5250 #. type: Plain text
5251 #: build/C/man8/ld.so.8:394
5252 msgid ""
5253 "(glibc since 2.4)  Set to 0 to disable pointer guarding.  Any other value "
5254 "enables pointer guarding, which is also the default.  Pointer guarding is a "
5255 "security mechanism whereby some pointers to code stored in writable program "
5256 "memory (return addresses saved by B<setjmp>(3)  or function pointers used by "
5257 "various glibc internals) are mangled semi-randomly to make it more difficult "
5258 "for an attacker to hijack the pointers for use in the event of a buffer "
5259 "overrun or stack-smashing attack."
5260 msgstr ""
5261
5262 #. type: TP
5263 #: build/C/man8/ld.so.8:394
5264 #, no-wrap
5265 msgid "B<LD_PROFILE>"
5266 msgstr ""
5267
5268 #. type: Plain text
5269 #: build/C/man8/ld.so.8:401
5270 msgid ""
5271 "(glibc since 2.1)  The name of a (single) shared object to be profiled, "
5272 "specified either as a pathname or a soname.  Profiling output is appended to "
5273 "the file whose name is: \"I<$LD_PROFILE_OUTPUT>/I<$LD_PROFILE>.profile\"."
5274 msgstr ""
5275
5276 #. type: TP
5277 #: build/C/man8/ld.so.8:401
5278 #, no-wrap
5279 msgid "B<LD_PROFILE_OUTPUT>"
5280 msgstr ""
5281
5282 #. type: Plain text
5283 #: build/C/man8/ld.so.8:414
5284 msgid ""
5285 "(glibc since 2.1)  Directory where B<LD_PROFILE> output should be written.  "
5286 "If this variable is not defined, or is defined as an empty string, then the "
5287 "default is I</var/tmp>.  B<LD_PROFILE_OUTPUT> is ignored for set-user-ID and "
5288 "set-group-ID programs, which always use I</var/profile>."
5289 msgstr ""
5290
5291 #. type: TP
5292 #: build/C/man8/ld.so.8:414
5293 #, no-wrap
5294 msgid "B<LD_SHOW_AUXV>"
5295 msgstr ""
5296
5297 #.  FIXME
5298 #.  Document LD_TRACE_PRELINKING (e.g.: LD_TRACE_PRELINKING=libx1.so ./prog)
5299 #.      Available since glibc 2.3
5300 #.      Also enables DL_DEBUG_PRELINK
5301 #. type: Plain text
5302 #: build/C/man8/ld.so.8:425
5303 msgid ""
5304 "(glibc since 2.1)  Show auxiliary array passed up from the kernel.  For "
5305 "security reasons, since glibc 2.3.5, B<LD_SHOW_AUXV> is ignored for "
5306 "set-user-ID/set-group-ID binaries."
5307 msgstr ""
5308
5309 #. type: TP
5310 #: build/C/man8/ld.so.8:425
5311 #, no-wrap
5312 msgid "B<LD_USE_LOAD_BIAS>"
5313 msgstr ""
5314
5315 #.  http://sources.redhat.com/ml/libc-hacker/2003-11/msg00127.html
5316 #.  Subject: [PATCH] Support LD_USE_LOAD_BIAS
5317 #.  Jakub Jelinek
5318 #. type: Plain text
5319 #: build/C/man8/ld.so.8:444
5320 msgid ""
5321 "By default (i.e., if this variable is not defined)  executables and "
5322 "prelinked shared objects will honor base addresses of their dependent "
5323 "libraries and (nonprelinked) position-independent executables (PIEs)  and "
5324 "other shared objects will not honor them.  If B<LD_USE_LOAD_BIAS> is defined "
5325 "with the value 1, both executables and PIEs will honor the base addresses.  "
5326 "If B<LD_USE_LOAD_BIAS> is defined with the value 0, neither executables nor "
5327 "PIEs will honor the base addresses.  This variable is ignored by set-user-ID "
5328 "and set-group-ID programs."
5329 msgstr ""
5330
5331 #. type: TP
5332 #: build/C/man8/ld.so.8:444
5333 #, no-wrap
5334 msgid "B<LD_VERBOSE>"
5335 msgstr ""
5336
5337 #. type: Plain text
5338 #: build/C/man8/ld.so.8:452
5339 msgid ""
5340 "(glibc since 2.1)  If set to a nonempty string, output symbol versioning "
5341 "information about the program if the B<LD_TRACE_LOADED_OBJECTS> environment "
5342 "variable has been set."
5343 msgstr ""
5344
5345 #. type: TP
5346 #: build/C/man8/ld.so.8:452
5347 #, no-wrap
5348 msgid "B<LD_WARN>"
5349 msgstr ""
5350
5351 #. type: Plain text
5352 #: build/C/man8/ld.so.8:456
5353 msgid ""
5354 "(ELF only)(glibc since 2.1.3)  If set to a nonempty string, warn about "
5355 "unresolved symbols."
5356 msgstr ""
5357
5358 #. type: TP
5359 #: build/C/man8/ld.so.8:456
5360 #, no-wrap
5361 msgid "B<LDD_ARGV0>"
5362 msgstr ""
5363
5364 #. type: Plain text
5365 #: build/C/man8/ld.so.8:463
5366 msgid "(libc5)  I<argv>[0] to be used by B<ldd>(1)  when none is present."
5367 msgstr ""
5368
5369 #. type: SH
5370 #: build/C/man8/ld.so.8:463 build/C/man8/ldconfig.8:156
5371 #, no-wrap
5372 msgid "FILES"
5373 msgstr ""
5374
5375 #. type: TP
5376 #: build/C/man8/ld.so.8:465 build/C/man8/ldconfig.8:158
5377 #, no-wrap
5378 msgid "I</lib/ld.so>"
5379 msgstr ""
5380
5381 #. type: Plain text
5382 #: build/C/man8/ld.so.8:468
5383 msgid "a.out dynamic linker/loader"
5384 msgstr ""
5385
5386 #. type: TP
5387 #: build/C/man8/ld.so.8:468
5388 #, no-wrap
5389 msgid "I</lib/ld-linux.so.>{I<1>,I<2>}"
5390 msgstr ""
5391
5392 #. type: Plain text
5393 #: build/C/man8/ld.so.8:471
5394 msgid "ELF dynamic linker/loader"
5395 msgstr ""
5396
5397 #. type: TP
5398 #: build/C/man8/ld.so.8:471 build/C/man8/ldconfig.8:165
5399 #, no-wrap
5400 msgid "I</etc/ld.so.cache>"
5401 msgstr ""
5402
5403 #. type: Plain text
5404 #: build/C/man8/ld.so.8:475
5405 msgid ""
5406 "File containing a compiled list of directories in which to search for "
5407 "libraries and an ordered list of candidate libraries."
5408 msgstr ""
5409
5410 #. type: TP
5411 #: build/C/man8/ld.so.8:475
5412 #, no-wrap
5413 msgid "I</etc/ld.so.preload>"
5414 msgstr ""
5415
5416 #. type: Plain text
5417 #: build/C/man8/ld.so.8:479
5418 msgid ""
5419 "File containing a whitespace-separated list of ELF shared libraries to be "
5420 "loaded before the program."
5421 msgstr ""
5422
5423 #. type: TP
5424 #: build/C/man8/ld.so.8:479
5425 #, no-wrap
5426 msgid "B<lib*.so*>"
5427 msgstr ""
5428
5429 #. type: Plain text
5430 #: build/C/man8/ld.so.8:482
5431 msgid "shared libraries"
5432 msgstr ""
5433
5434 #. type: Plain text
5435 #: build/C/man8/ld.so.8:489
5436 msgid ""
5437 "The B<ld.so> functionality is available for executables compiled using libc "
5438 "version 4.4.3 or greater.  ELF functionality is available since Linux 1.1.52 "
5439 "and libc5."
5440 msgstr ""
5441
5442 #.  .SH AUTHORS
5443 #.  ld.so: David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus
5444 #.   Torvalds, Lars Wirzenius and Mitch D'Souza
5445 #.  ld-linux.so: Roland McGrath, Ulrich Drepper and others.
5446 #
5447 #.  In the above, (libc5) stands for David Engel's ld.so/ld-linux.so.
5448 #. type: Plain text
5449 #: build/C/man8/ld.so.8:505
5450 msgid ""
5451 "B<ld>(1), B<ldd>(1), B<pldd>(1), B<sprof>(1), B<dlopen>(3), B<getauxval>(3), "
5452 "B<rtld-audit>(7), B<ldconfig>(8), B<sln>(8)"
5453 msgstr ""
5454
5455 #. type: TH
5456 #: build/C/man8/ldconfig.8:22
5457 #, no-wrap
5458 msgid "LDCONFIG"
5459 msgstr ""
5460
5461 #. type: TH
5462 #: build/C/man8/ldconfig.8:22
5463 #, no-wrap
5464 msgid "2012-05-10"
5465 msgstr ""
5466
5467 #. type: Plain text
5468 #: build/C/man8/ldconfig.8:25
5469 msgid "ldconfig - configure dynamic linker run-time bindings"
5470 msgstr ""
5471
5472 #. type: Plain text
5473 #: build/C/man8/ldconfig.8:40
5474 msgid ""
5475 "B</sbin/ldconfig> [ B<-nNvXV> ] [ B<-f\\ conf> ] [ B<-C\\ cache> ] [ B<-r\\ "
5476 "root> ] I<directory>\\ ..."
5477 msgstr ""
5478
5479 #. type: Plain text
5480 #: build/C/man8/ldconfig.8:49
5481 msgid "B</sbin/ldconfig> B<-l> [ B<-v> ] I<library>\\ ..."
5482 msgstr ""
5483
5484 #. type: Plain text
5485 #: build/C/man8/ldconfig.8:54
5486 msgid "B</sbin/ldconfig> B<-p>"
5487 msgstr ""
5488
5489 #. type: Plain text
5490 #: build/C/man8/ldconfig.8:71
5491 msgid ""
5492 "B<ldconfig> creates the necessary links and cache to the most recent shared "
5493 "libraries found in the directories specified on the command line, in the "
5494 "file I</etc/ld.so.conf>, and in the trusted directories (I</lib> and "
5495 "I</usr/lib>).  The cache is used by the run-time linker, I<ld.so> or "
5496 "I<ld-linux.so>.  B<ldconfig> checks the header and filenames of the "
5497 "libraries it encounters when determining which versions should have their "
5498 "links updated."
5499 msgstr ""
5500
5501 #.  The following sentence looks suspect
5502 #.  (perhaps historical cruft) -- MTK, Jul 2005
5503 #.  Therefore, when making dynamic libraries,
5504 #.  it is wise to explicitly link against libc (use \-lc).
5505 #. type: Plain text
5506 #: build/C/man8/ldconfig.8:79
5507 msgid ""
5508 "B<ldconfig> will attempt to deduce the type of ELF libs (i.e., libc5 or "
5509 "libc6/glibc)  based on what C libs, if any, the library was linked against."
5510 msgstr ""
5511
5512 #. type: Plain text
5513 #: build/C/man8/ldconfig.8:100
5514 msgid ""
5515 "Some existing libs do not contain enough information to allow the deduction "
5516 "of their type.  Therefore, the I</etc/ld.so.conf> file format allows the "
5517 "specification of an expected type.  This is used I<only> for those ELF libs "
5518 "which we can not work out.  The format is \"dirname=TYPE\", where TYPE can "
5519 "be libc4, libc5, or libc6.  (This syntax also works on the command line.)  "
5520 "Spaces are I<not> allowed.  Also see the B<-p> option.  B<ldconfig> should "
5521 "normally be run by the superuser as it may require write permission on some "
5522 "root owned directories and files."
5523 msgstr ""
5524
5525 #. type: TP
5526 #: build/C/man8/ldconfig.8:101
5527 #, no-wrap
5528 msgid "B<-v>"
5529 msgstr ""
5530
5531 #. type: Plain text
5532 #: build/C/man8/ldconfig.8:107
5533 msgid ""
5534 "Verbose mode.  Print current version number, the name of each directory as "
5535 "it is scanned, and any links that are created.  Overrides quiet mode."
5536 msgstr ""
5537
5538 #. type: TP
5539 #: build/C/man8/ldconfig.8:107
5540 #, no-wrap
5541 msgid "B<-n>"
5542 msgstr ""
5543
5544 #. type: Plain text
5545 #: build/C/man8/ldconfig.8:118
5546 msgid ""
5547 "Only process directories specified on the command line.  Don't process the "
5548 "trusted directories (I</lib> and I</usr/lib>)  nor those specified in "
5549 "I</etc/ld.so.conf>.  Implies B<-N>."
5550 msgstr ""
5551
5552 #. type: TP
5553 #: build/C/man8/ldconfig.8:118
5554 #, no-wrap
5555 msgid "B<-N>"
5556 msgstr ""
5557
5558 #. type: Plain text
5559 #: build/C/man8/ldconfig.8:124
5560 msgid ""
5561 "Don't rebuild the cache.  Unless B<-X> is also specified, links are still "
5562 "updated."
5563 msgstr ""
5564
5565 #. type: TP
5566 #: build/C/man8/ldconfig.8:124
5567 #, no-wrap
5568 msgid "B<-X>"
5569 msgstr ""
5570
5571 #. type: Plain text
5572 #: build/C/man8/ldconfig.8:130
5573 msgid ""
5574 "Don't update links.  Unless B<-N> is also specified, the cache is still "
5575 "rebuilt."
5576 msgstr ""
5577
5578 #. type: TP
5579 #: build/C/man8/ldconfig.8:130
5580 #, no-wrap
5581 msgid "B<-f conf>"
5582 msgstr ""
5583
5584 #. type: Plain text
5585 #: build/C/man8/ldconfig.8:136
5586 msgid "Use B<conf> instead of I</etc/ld.so.conf>."
5587 msgstr ""
5588
5589 #. type: TP
5590 #: build/C/man8/ldconfig.8:136
5591 #, no-wrap
5592 msgid "B<-C cache>"
5593 msgstr ""
5594
5595 #. type: Plain text
5596 #: build/C/man8/ldconfig.8:142
5597 msgid "Use B<cache> instead of I</etc/ld.so.cache>."
5598 msgstr ""
5599
5600 #. type: TP
5601 #: build/C/man8/ldconfig.8:142
5602 #, no-wrap
5603 msgid "B<-r root>"
5604 msgstr ""
5605
5606 #. type: Plain text
5607 #: build/C/man8/ldconfig.8:147
5608 msgid "Change to and use I<root> as the root directory."
5609 msgstr ""
5610
5611 #. type: TP
5612 #: build/C/man8/ldconfig.8:147
5613 #, no-wrap
5614 msgid "B<-l>"
5615 msgstr ""
5616
5617 #. type: Plain text
5618 #: build/C/man8/ldconfig.8:152
5619 msgid ""
5620 "Library mode.  Manually link individual libraries.  Intended for use by "
5621 "experts only."
5622 msgstr ""
5623
5624 #. type: TP
5625 #: build/C/man8/ldconfig.8:152
5626 #, no-wrap
5627 msgid "B<-p>"
5628 msgstr ""
5629
5630 #. type: Plain text
5631 #: build/C/man8/ldconfig.8:156
5632 msgid ""
5633 "Print the lists of directories and candidate libraries stored in the current "
5634 "cache."
5635 msgstr ""
5636
5637 #. type: Plain text
5638 #: build/C/man8/ldconfig.8:161
5639 msgid "run-time linker/loader"
5640 msgstr ""
5641
5642 #. type: TP
5643 #: build/C/man8/ldconfig.8:161
5644 #, no-wrap
5645 msgid "I</etc/ld.so.conf>"
5646 msgstr ""
5647
5648 #. type: Plain text
5649 #: build/C/man8/ldconfig.8:165
5650 msgid ""
5651 "File containing a list of colon, space, tab, newline, or comma-separated "
5652 "directories in which to search for libraries."
5653 msgstr ""
5654
5655 #. type: Plain text
5656 #: build/C/man8/ldconfig.8:174
5657 msgid ""
5658 "File containing an ordered list of libraries found in the directories "
5659 "specified in I</etc/ld.so.conf>, as well as those found in I</lib> and "
5660 "I</usr/lib>."
5661 msgstr ""
5662
5663 #. type: Plain text
5664 #: build/C/man8/ldconfig.8:178
5665 msgid "B<ldd>(1), B<ld.so>(8)"
5666 msgstr ""
5667
5668 #. type: TH
5669 #: build/C/man1/ldd.1:14
5670 #, no-wrap
5671 msgid "LDD"
5672 msgstr ""
5673
5674 #. type: Plain text
5675 #: build/C/man1/ldd.1:17
5676 msgid "ldd - print shared library dependencies"
5677 msgstr ""
5678
5679 #. type: Plain text
5680 #: build/C/man1/ldd.1:19
5681 msgid "B<ldd> [I<option>]... I<file>..."
5682 msgstr ""
5683
5684 #. type: Plain text
5685 #: build/C/man1/ldd.1:23
5686 msgid ""
5687 "B<ldd> prints the shared libraries required by each program or shared "
5688 "library specified on the command line."
5689 msgstr ""
5690
5691 #. type: SS
5692 #: build/C/man1/ldd.1:23
5693 #, no-wrap
5694 msgid "Security"
5695 msgstr ""
5696
5697 #.  Mainline glibc's ldd allows this possibility (the line
5698 #.       try_trace "$file"
5699 #.  in glibc 2.15, for example), but many distro versions of
5700 #.  ldd seem to remove that code path from the script.
5701 #. type: Plain text
5702 #: build/C/man1/ldd.1:49
5703 msgid ""
5704 "In the usual case, B<ldd> invokes the standard dynamic linker (see "
5705 "B<ld.so>(8))  with the B<LD_TRACE_LOADED_OBJECTS> environment variable set "
5706 "to 1, which causes the linker to display the library dependencies.  Be "
5707 "aware, however, that in some circumstances, some versions of B<ldd> may "
5708 "attempt to obtain the dependency information by directly executing the "
5709 "program.  Thus, you should I<never> employ B<ldd> on an untrusted "
5710 "executable, since this may result in the execution of arbitrary code.  A "
5711 "safer alternative when dealing with untrusted executables is:"
5712 msgstr ""
5713
5714 #. type: Plain text
5715 #: build/C/man1/ldd.1:51
5716 #, no-wrap
5717 msgid "    $ objdump -p /path/to/program | grep NEEDED\n"
5718 msgstr ""
5719
5720 #. type: TP
5721 #: build/C/man1/ldd.1:52 build/C/man1/mtrace.1:55
5722 #, no-wrap
5723 msgid "B<--version>"
5724 msgstr ""
5725
5726 #. type: Plain text
5727 #: build/C/man1/ldd.1:56
5728 msgid "Print the version number of B<ldd>."
5729 msgstr ""
5730
5731 #. type: TP
5732 #: build/C/man1/ldd.1:56
5733 #, no-wrap
5734 msgid "B<-v\\ --verbose>"
5735 msgstr ""
5736
5737 #. type: Plain text
5738 #: build/C/man1/ldd.1:60
5739 msgid ""
5740 "Print all information, including, for example, symbol versioning "
5741 "information."
5742 msgstr ""
5743
5744 #. type: TP
5745 #: build/C/man1/ldd.1:60
5746 #, no-wrap
5747 msgid "B<-u\\ --unused>"
5748 msgstr ""
5749
5750 #. type: Plain text
5751 #: build/C/man1/ldd.1:64
5752 msgid "Print unused direct dependencies.  (Since glibc 2.3.4.)"
5753 msgstr ""
5754
5755 #. type: TP
5756 #: build/C/man1/ldd.1:64
5757 #, no-wrap
5758 msgid "B<-d\\ --data-relocs>"
5759 msgstr ""
5760
5761 #. type: Plain text
5762 #: build/C/man1/ldd.1:67
5763 msgid "Perform relocations and report any missing objects (ELF only)."
5764 msgstr ""
5765
5766 #. type: TP
5767 #: build/C/man1/ldd.1:67
5768 #, no-wrap
5769 msgid "B<-r\\ --function-relocs>"
5770 msgstr ""
5771
5772 #. type: Plain text
5773 #: build/C/man1/ldd.1:71
5774 msgid ""
5775 "Perform relocations for both data objects and functions, and report any "
5776 "missing objects or functions (ELF only)."
5777 msgstr ""
5778
5779 #. type: TP
5780 #: build/C/man1/ldd.1:71 build/C/man1/mtrace.1:52
5781 #, no-wrap
5782 msgid "B<--help>"
5783 msgstr ""
5784
5785 #.  .SH NOTES
5786 #.  The standard version of
5787 #.  .B ldd
5788 #.  comes with glibc2.
5789 #.  Libc5 came with an older version, still present
5790 #.  on some systems.
5791 #.  The long options are not supported by the libc5 version.
5792 #.  On the other hand, the glibc2 version does not support
5793 #.  .B \-V
5794 #.  and only has the equivalent
5795 #.  .BR \-\-version .
5796 #.  .LP
5797 #.  The libc5 version of this program will use the name of a library given
5798 #.  on the command line as-is when it contains a \(aq/\(aq; otherwise it
5799 #.  searches for the library in the standard locations.
5800 #.  To run it
5801 #.  on a shared library in the current directory, prefix the name with "./".
5802 #. type: Plain text
5803 #: build/C/man1/ldd.1:91
5804 msgid "Usage information."
5805 msgstr ""
5806
5807 #. type: Plain text
5808 #: build/C/man1/ldd.1:94
5809 msgid "B<ldd> does not work on a.out shared libraries."
5810 msgstr ""
5811
5812 #.  .SH AUTHOR
5813 #.  David Engel.
5814 #.  Roland McGrath and Ulrich Drepper.
5815 #. type: Plain text
5816 #: build/C/man1/ldd.1:108
5817 msgid ""
5818 "B<ldd> does not work with some extremely old a.out programs which were built "
5819 "before B<ldd> support was added to the compiler releases.  If you use B<ldd> "
5820 "on one of these programs, the program will attempt to run with I<argc> = 0 "
5821 "and the results will be unpredictable."
5822 msgstr ""
5823
5824 #. type: Plain text
5825 #: build/C/man1/ldd.1:113
5826 msgid "B<sprof>(1), B<pldd>(1), B<ld.so>(8), B<ldconfig>(8)"
5827 msgstr ""
5828
5829 #. type: TH
5830 #: build/C/man1/memusage.1:24
5831 #, no-wrap
5832 msgid "MEMUSAGE"
5833 msgstr ""
5834
5835 #. type: TH
5836 #: build/C/man1/memusage.1:24 build/C/man1/memusagestat.1:23
5837 #, no-wrap
5838 msgid "2014-09-06"
5839 msgstr ""
5840
5841 #. type: TH
5842 #: build/C/man1/memusage.1:24 build/C/man1/mtrace.1:23
5843 #, no-wrap
5844 msgid "Linux user manual"
5845 msgstr ""
5846
5847 #. type: Plain text
5848 #: build/C/man1/memusage.1:27
5849 msgid "memusage - profile memory usage of a program"
5850 msgstr ""
5851
5852 #. type: Plain text
5853 #: build/C/man1/memusage.1:29
5854 msgid "B<memusage> [I<option>]... I<program> [I<programoption>]..."
5855 msgstr ""
5856
5857 #. type: Plain text
5858 #: build/C/man1/memusage.1:53
5859 msgid ""
5860 "B<memusage> is a bash script which profiles memory usage of the program, "
5861 "I<program>.  It preloads the B<libmemusage.so> library into the caller's "
5862 "environment (via the B<LD_PRELOAD> environment variable; see B<ld.so>(8)).  "
5863 "The B<libmemusage.so> library traces memory allocation by intercepting calls "
5864 "to B<malloc>(3), B<calloc>(3), B<free>(3), and B<realloc>(3); optionally, "
5865 "calls to B<mmap>(2), B<mremap>(2), and B<munmap>(2)  can also be "
5866 "intercepted."
5867 msgstr ""
5868
5869 #. type: Plain text
5870 #: build/C/man1/memusage.1:62
5871 msgid ""
5872 "B<memusage> can output the collected data in textual form, or it can use "
5873 "B<memusagestat>(1)  (see the B<-p> option, below)  to create a PNG file "
5874 "containing graphical representation of the collected data."
5875 msgstr ""
5876
5877 #. type: SS
5878 #: build/C/man1/memusage.1:62
5879 #, no-wrap
5880 msgid "Memory usage summary"
5881 msgstr ""
5882
5883 #. type: Plain text
5884 #: build/C/man1/memusage.1:66
5885 msgid ""
5886 "The \"Memory usage summary\" line output by B<memusage> contains three "
5887 "fields:"
5888 msgstr ""
5889
5890 #. type: TP
5891 #: build/C/man1/memusage.1:67
5892 #, no-wrap
5893 msgid "B<heap total>"
5894 msgstr ""
5895
5896 #. type: Plain text
5897 #: build/C/man1/memusage.1:84
5898 msgid ""
5899 "Sum of I<size> arguments of all B<malloc>(3)  calls, products of arguments "
5900 "(I<nmemb>*I<size>) of all B<calloc>(3)  calls, and sum of I<length> "
5901 "arguments of all B<mmap>(2)  calls.  In the case of B<realloc>(3)  and "
5902 "B<mremap>(2), if the new size of an allocation is larger than the previous "
5903 "size, the sum of all such differences (new size minus old size) is added."
5904 msgstr ""
5905
5906 #. type: TP
5907 #: build/C/man1/memusage.1:84
5908 #, no-wrap
5909 msgid "B<heap peak>"
5910 msgstr ""
5911
5912 #. type: Plain text
5913 #: build/C/man1/memusage.1:98
5914 msgid ""
5915 "Maximum of all I<size> arguments of B<malloc>(3), all products of "
5916 "I<nmemb>*I<size> of B<calloc>(3), all I<size> arguments of B<realloc>(3), "
5917 "I<length> arguments of B<mmap>(2), and I<new_size> arguments of "
5918 "B<mremap>(2)."
5919 msgstr ""
5920
5921 #. type: TP
5922 #: build/C/man1/memusage.1:98
5923 #, no-wrap
5924 msgid "B<stack peak>"
5925 msgstr ""
5926
5927 #. type: Plain text
5928 #: build/C/man1/memusage.1:105
5929 msgid ""
5930 "Before the first call to any monitored function, the stack pointer address "
5931 "(base stack pointer) is saved.  After each function call, the actual stack "
5932 "pointer address is read and the difference from the base stack pointer "
5933 "computed.  The maximum of these differences is then the stack peak."
5934 msgstr ""
5935
5936 #. type: Plain text
5937 #: build/C/man1/memusage.1:122
5938 msgid ""
5939 "Immediately following this summary line, a table shows the number calls, "
5940 "total memory allocated or deallocated, and number of failed calls for each "
5941 "intercepted function.  For B<realloc>(3)  and B<mremap>(2), the additional "
5942 "field \"nomove\" shows reallocations that changed the address of a block, "
5943 "and the additional \"dec\" field shows reallocations that decreased the size "
5944 "of the block.  For B<realloc>(3), the additional field \"free\" shows "
5945 "reallocations that caused a block to be freed (i.e., the reallocated size "
5946 "was 0)."
5947 msgstr ""
5948
5949 #. type: Plain text
5950 #: build/C/man1/memusage.1:132
5951 msgid ""
5952 "The \"realloc/total memory\" of the table output by B<memusage> does not "
5953 "reflect cases where B<realloc>(3)  is used to reallocate a block of memory "
5954 "to have a smaller size than previously.  This can cause sum of all \"total "
5955 "memory\" cells (excluding \"free\")  to be larger than the \"free/total "
5956 "memory\" cell."
5957 msgstr ""
5958
5959 #. type: SS
5960 #: build/C/man1/memusage.1:132
5961 #, no-wrap
5962 msgid "Histogram for block sizes"
5963 msgstr ""
5964
5965 #. type: Plain text
5966 #: build/C/man1/memusage.1:135
5967 msgid ""
5968 "The \"Histogram for block sizes\" provides a breakdown of memory allocations "
5969 "into various bucket sizes."
5970 msgstr ""
5971
5972 #. type: TP
5973 #: build/C/man1/memusage.1:136
5974 #, no-wrap
5975 msgid "B<-n\\ >I<name>,\\ B<--progname=>I<name>"
5976 msgstr ""
5977
5978 #. type: Plain text
5979 #: build/C/man1/memusage.1:139
5980 msgid "Name of the program file to profile."
5981 msgstr ""
5982
5983 #. type: TP
5984 #: build/C/man1/memusage.1:139
5985 #, no-wrap
5986 msgid "B<-p\\ >I<file>,\\ B<--png=>I<file>"
5987 msgstr ""
5988
5989 #. type: Plain text
5990 #: build/C/man1/memusage.1:143
5991 msgid "Generate PNG graphic and store it in I<file>."
5992 msgstr ""
5993
5994 #. type: TP
5995 #: build/C/man1/memusage.1:143
5996 #, no-wrap
5997 msgid "B<-d\\ >I<file>,\\ B<--data=>I<file>"
5998 msgstr ""
5999
6000 #. type: Plain text
6001 #: build/C/man1/memusage.1:147
6002 msgid "Generate binary data file and store it in I<file>."
6003 msgstr ""
6004
6005 #. type: TP
6006 #: build/C/man1/memusage.1:147
6007 #, no-wrap
6008 msgid "B<-u>,\\ B<--unbuffered>"
6009 msgstr ""
6010
6011 #. type: Plain text
6012 #: build/C/man1/memusage.1:150
6013 msgid "Do not buffer output."
6014 msgstr ""
6015
6016 #. type: TP
6017 #: build/C/man1/memusage.1:150
6018 #, no-wrap
6019 msgid "B<-b\\ >I<size>,\\ B<--buffer=>I<size>"
6020 msgstr ""
6021
6022 #. type: Plain text
6023 #: build/C/man1/memusage.1:155
6024 msgid "Collect I<size> entries before writing them out."
6025 msgstr ""
6026
6027 #. type: TP
6028 #: build/C/man1/memusage.1:155
6029 #, no-wrap
6030 msgid "B<--no-timer>"
6031 msgstr ""
6032
6033 #. type: Plain text
6034 #: build/C/man1/memusage.1:160
6035 msgid "Disable timer-based (B<SIGPROF>)  sampling of stack pointer value."
6036 msgstr ""
6037
6038 #. type: TP
6039 #: build/C/man1/memusage.1:160
6040 #, no-wrap
6041 msgid "B<-m>,\\ B<--mmap>"
6042 msgstr ""
6043
6044 #. type: Plain text
6045 #: build/C/man1/memusage.1:167
6046 msgid "Also trace B<mmap>(2), B<mremap>(2), and B<mmap>(2)."
6047 msgstr ""
6048
6049 #. type: TP
6050 #: build/C/man1/memusage.1:167 build/C/man1/memusagestat.1:72
6051 #, no-wrap
6052 msgid "B<-?>,\\ B<--help>"
6053 msgstr ""
6054
6055 #. type: Plain text
6056 #: build/C/man1/memusage.1:170 build/C/man1/mtrace.1:55
6057 msgid "Print help and exit."
6058 msgstr ""
6059
6060 #. type: TP
6061 #: build/C/man1/memusage.1:170 build/C/man1/memusagestat.1:75 build/C/man1/pldd.1:44 build/C/man1/sprof.1:69
6062 #, no-wrap
6063 msgid "B<--usage>"
6064 msgstr ""
6065
6066 #. type: Plain text
6067 #: build/C/man1/memusage.1:173 build/C/man1/memusagestat.1:78
6068 msgid "Print a short usage message and exit."
6069 msgstr ""
6070
6071 #. type: TP
6072 #: build/C/man1/memusage.1:173 build/C/man1/memusagestat.1:78
6073 #, no-wrap
6074 msgid "B<-V>,\\ B<--version>"
6075 msgstr ""
6076
6077 #. type: Plain text
6078 #: build/C/man1/memusage.1:176 build/C/man1/memusagestat.1:81 build/C/man1/mtrace.1:58
6079 msgid "Print version information and exit."
6080 msgstr ""
6081
6082 #. type: TP
6083 #: build/C/man1/memusage.1:176
6084 #, no-wrap
6085 msgid "The following options only apply when generating graphical output:"
6086 msgstr ""
6087
6088 #. type: TP
6089 #: build/C/man1/memusage.1:178
6090 #, no-wrap
6091 msgid "B<-t>,\\ B<--time-based>"
6092 msgstr ""
6093
6094 #. type: Plain text
6095 #: build/C/man1/memusage.1:181 build/C/man1/memusagestat.1:59
6096 msgid "Use time (rather than number of function calls) as the scale for the X axis."
6097 msgstr ""
6098
6099 #. type: TP
6100 #: build/C/man1/memusage.1:181 build/C/man1/memusagestat.1:59
6101 #, no-wrap
6102 msgid "B<-T>,\\ B<--total>"
6103 msgstr ""
6104
6105 #. type: Plain text
6106 #: build/C/man1/memusage.1:184
6107 msgid "Also draw a graph of total memory use."
6108 msgstr ""
6109
6110 #. type: TP
6111 #: build/C/man1/memusage.1:184
6112 #, no-wrap
6113 msgid "B<--title=>I<name>"
6114 msgstr ""
6115
6116 #. type: Plain text
6117 #: build/C/man1/memusage.1:189
6118 msgid "Use I<name> as the title of the graph."
6119 msgstr ""
6120
6121 #. type: TP
6122 #: build/C/man1/memusage.1:189 build/C/man1/memusagestat.1:62
6123 #, no-wrap
6124 msgid "B<-x\\ >I<size>,\\ B<--x-size=>I<size>"
6125 msgstr ""
6126
6127 #. type: Plain text
6128 #: build/C/man1/memusage.1:194
6129 msgid "Make the graph I<size> pixels wide."
6130 msgstr ""
6131
6132 #. type: TP
6133 #: build/C/man1/memusage.1:194 build/C/man1/memusagestat.1:67
6134 #, no-wrap
6135 msgid "B<-y\\ >I<size>,\\ B<--y-size=>I<size>"
6136 msgstr ""
6137
6138 #. type: Plain text
6139 #: build/C/man1/memusage.1:199
6140 msgid "Make the graph I<size> pixels high."
6141 msgstr ""
6142
6143 #. type: SH
6144 #: build/C/man1/memusage.1:199 build/C/man1/pldd.1:60
6145 #, no-wrap
6146 msgid "EXIT STATUS"
6147 msgstr ""
6148
6149 #. type: Plain text
6150 #: build/C/man1/memusage.1:201
6151 msgid "Exit status is equal to the exit status of profiled program."
6152 msgstr ""
6153
6154 #. type: Plain text
6155 #: build/C/man1/memusage.1:208
6156 msgid ""
6157 "Below is a simple program that reallocates a block of memory in cycles that "
6158 "rise to a peak before then cyclically reallocating the memory in smaller "
6159 "blocks that return to zero.  After compiling the program and running the "
6160 "following commands, a graph of the memory usage of the program can be found "
6161 "in the file I<memusage.png>:"
6162 msgstr ""
6163
6164 #. type: Plain text
6165 #: build/C/man1/memusage.1:232
6166 #, no-wrap
6167 msgid ""
6168 "$ B<memusage --data=memusage.dat ./a.out>\n"
6169 "\\&...\n"
6170 "Memory usage summary: heap total: 45200, heap peak: 6440, stack peak: 224\n"
6171 "        total calls  total memory  failed calls\n"
6172 " malloc|         1           400             0\n"
6173 "realloc|        40         44800             0  (nomove:40, dec:19, "
6174 "free:0)\n"
6175 " calloc|         0             0             0\n"
6176 "   free|         1           440\n"
6177 "Histogram for block sizes:\n"
6178 "  192-207             1   2% ================\n"
6179 "\\&...\n"
6180 " 2192-2207            1   2% ================\n"
6181 " 2240-2255            2   4% =================================\n"
6182 " 2832-2847            2   4% =================================\n"
6183 " 3440-3455            2   4% =================================\n"
6184 " 4032-4047            2   4% =================================\n"
6185 " 4640-4655            2   4% =================================\n"
6186 " 5232-5247            2   4% =================================\n"
6187 " 5840-5855            2   4% =================================\n"
6188 " 6432-6447            1   2% ================\n"
6189 "$ B<memusagestat memusage.dat memusage.png>\n"
6190 msgstr ""
6191
6192 #. type: Plain text
6193 #: build/C/man1/memusage.1:240
6194 #, no-wrap
6195 msgid "#define CYCLES 20\n"
6196 msgstr ""
6197
6198 #. type: Plain text
6199 #: build/C/man1/memusage.1:246
6200 #, no-wrap
6201 msgid ""
6202 "int\n"
6203 "main(int argc, char *argv[])\n"
6204 "{\n"
6205 "     int i, j;\n"
6206 "     int *p;\n"
6207 msgstr ""
6208
6209 #. type: Plain text
6210 #: build/C/man1/memusage.1:249
6211 #, no-wrap
6212 msgid ""
6213 "     printf(\"malloc: %zd\\en\", sizeof(int) * 100);\n"
6214 "     p = malloc(sizeof(int) * 100);\n"
6215 msgstr ""
6216
6217 #. type: Plain text
6218 #: build/C/man1/memusage.1:255
6219 #, no-wrap
6220 msgid ""
6221 "     for (i = 0; i E<lt> CYCLES; i++) {\n"
6222 "         if (i E<lt> CYCLES / 2)\n"
6223 "             j = i;\n"
6224 "         else\n"
6225 "             j--;\n"
6226 msgstr ""
6227
6228 #. type: Plain text
6229 #: build/C/man1/memusage.1:258
6230 #, no-wrap
6231 msgid ""
6232 "         printf(\"realloc: %zd\\en\", sizeof(int) * (j * 50 + 110));\n"
6233 "         p = realloc(p, sizeof(int) * (j * 50 + 100));\n"
6234 msgstr ""
6235
6236 #. type: Plain text
6237 #: build/C/man1/memusage.1:262
6238 #, no-wrap
6239 msgid ""
6240 "         printf(\"realloc: %zd\\en\", sizeof(int) * ((j+1) * 150 + 110));\n"
6241 "         p = realloc(p, sizeof(int) * ((j + 1) * 150 + 110));\n"
6242 "     }\n"
6243 msgstr ""
6244
6245 #. type: Plain text
6246 #: build/C/man1/memusage.1:266
6247 #, no-wrap
6248 msgid ""
6249 "     free(p);\n"
6250 "     exit(EXIT_SUCCESS);\n"
6251 "}\n"
6252 msgstr ""
6253
6254 #. type: Plain text
6255 #: build/C/man1/memusage.1:271 build/C/man1/memusagestat.1:88
6256 msgid "To report bugs, see E<.UR http://www.gnu.org/software/libc/bugs.html> E<.UE>"
6257 msgstr ""
6258
6259 #. type: Plain text
6260 #: build/C/man1/memusage.1:275
6261 msgid "B<memusagestat>(1), B<mtrace>(1)  B<ld.so>(8)"
6262 msgstr ""
6263
6264 #. type: TH
6265 #: build/C/man1/memusagestat.1:23
6266 #, no-wrap
6267 msgid "MEMUSAGESTAT"
6268 msgstr ""
6269
6270 #. type: TH
6271 #: build/C/man1/memusagestat.1:23
6272 #, no-wrap
6273 msgid "Linux programmer's manual"
6274 msgstr ""
6275
6276 #. type: Plain text
6277 #: build/C/man1/memusagestat.1:26
6278 msgid "memusagestat - generate graphic from memory profiling data"
6279 msgstr ""
6280
6281 #. type: Plain text
6282 #: build/C/man1/memusagestat.1:28
6283 msgid "B<memusagestat> [I<option>]... I<datafile> [I<outfile>]"
6284 msgstr ""
6285
6286 #. type: Plain text
6287 #: build/C/man1/memusagestat.1:39
6288 msgid ""
6289 "B<memusagestat> creates a PNG file containing a graphical representation of "
6290 "the memory profiling data in the file I<datafile>; that file is generated "
6291 "via the I<-d> (or I<--data>)  option of B<memusage>(1)."
6292 msgstr ""
6293
6294 #. type: Plain text
6295 #: build/C/man1/memusagestat.1:47
6296 msgid ""
6297 "The red line in the graph shows the heap usage (allocated memory)  and the "
6298 "green line shows the stack usage.  The x-scale is either the number of "
6299 "memory-handling function calls or (if the I<-t> option is specified)  time."
6300 msgstr ""
6301
6302 #. type: TP
6303 #: build/C/man1/memusagestat.1:48
6304 #, no-wrap
6305 msgid "B<-o\\ >I<file>,\\ B<--output=>I<file>"
6306 msgstr ""
6307
6308 #. type: Plain text
6309 #: build/C/man1/memusagestat.1:51
6310 msgid "Name of the output file."
6311 msgstr ""
6312
6313 #. type: TP
6314 #: build/C/man1/memusagestat.1:51
6315 #, no-wrap
6316 msgid "B<-s\\ >I<string>,\\ B<--string=>I<string>"
6317 msgstr ""
6318
6319 #. type: Plain text
6320 #: build/C/man1/memusagestat.1:56
6321 msgid "Use I<string> as the title inside the output graph."
6322 msgstr ""
6323
6324 #. type: TP
6325 #: build/C/man1/memusagestat.1:56
6326 #, no-wrap
6327 msgid "B<-t>,\\ B<--time>"
6328 msgstr ""
6329
6330 #. type: Plain text
6331 #: build/C/man1/memusagestat.1:62
6332 msgid "Also draw a graph of total memory consumption."
6333 msgstr ""
6334
6335 #. type: Plain text
6336 #: build/C/man1/memusagestat.1:67
6337 msgid "Make the output graph I<size> pixels wide."
6338 msgstr ""
6339
6340 #. type: Plain text
6341 #: build/C/man1/memusagestat.1:72
6342 msgid "Make the output graph I<size> pixels high."
6343 msgstr ""
6344
6345 #. type: Plain text
6346 #: build/C/man1/memusagestat.1:75
6347 msgid "Print a help message and exit."
6348 msgstr ""
6349
6350 #. type: Plain text
6351 #: build/C/man1/memusagestat.1:84
6352 msgid "See B<memusage>(1)."
6353 msgstr ""
6354
6355 #. type: Plain text
6356 #: build/C/man1/memusagestat.1:91
6357 msgid "B<memusage>(1), B<mtrace>(1)"
6358 msgstr ""
6359
6360 #. type: TH
6361 #: build/C/man1/mtrace.1:23
6362 #, no-wrap
6363 msgid "MTRACE"
6364 msgstr ""
6365
6366 #. type: TH
6367 #: build/C/man1/mtrace.1:23
6368 #, no-wrap
6369 msgid "2014-09-01"
6370 msgstr ""
6371
6372 #. type: Plain text
6373 #: build/C/man1/mtrace.1:26
6374 msgid "mtrace - interpret the malloc trace log"
6375 msgstr ""
6376
6377 #. type: Plain text
6378 #: build/C/man1/mtrace.1:28
6379 msgid "B<mtrace> [I<option>]... [I<binary>] I<mtracedata>"
6380 msgstr ""
6381
6382 #. type: Plain text
6383 #: build/C/man1/mtrace.1:44
6384 msgid ""
6385 "B<mtrace> is a Perl script used to interpret and provide human readable "
6386 "output of the trace log contained in the file I<mtracedata>, whose contents "
6387 "were produced by B<mtrace>(3).  If I<binary> is provided, the output of "
6388 "B<mtrace> also contains the source file name with line number information "
6389 "for problem locations (assuming that I<binary> was compiled with debugging "
6390 "information)."
6391 msgstr ""
6392
6393 #. type: Plain text
6394 #: build/C/man1/mtrace.1:51
6395 msgid ""
6396 "For more information about the B<mtrace>(3)  function and B<mtrace> script "
6397 "usage, see B<mtrace>(3)."
6398 msgstr ""
6399
6400 #. type: Plain text
6401 #: build/C/man1/mtrace.1:61
6402 msgid ""
6403 "For bug reporting instructions, please see: "
6404 "E<lt>http://www.gnu.org/software/libc/bugs.htmlE<gt>."
6405 msgstr ""
6406
6407 #. type: Plain text
6408 #: build/C/man1/mtrace.1:64
6409 msgid "B<memusage>(1), B<mtrace>(3)"
6410 msgstr ""
6411
6412 #. type: TH
6413 #: build/C/man1/pldd.1:25
6414 #, no-wrap
6415 msgid "PLDD"
6416 msgstr ""
6417
6418 #. type: TH
6419 #: build/C/man1/pldd.1:25
6420 #, no-wrap
6421 msgid "2014-09-27"
6422 msgstr ""
6423
6424 #. type: TH
6425 #: build/C/man1/pldd.1:25 build/C/man1/sprof.1:25
6426 #, no-wrap
6427 msgid "Linux User Manual"
6428 msgstr ""
6429
6430 #. type: Plain text
6431 #: build/C/man1/pldd.1:28
6432 msgid "pldd - display dynamic shared objects linked into a process"
6433 msgstr ""
6434
6435 #. type: Plain text
6436 #: build/C/man1/pldd.1:32
6437 #, no-wrap
6438 msgid ""
6439 "B<pldd >I<PID>\n"
6440 "B<pldd> OPTION\n"
6441 msgstr ""
6442
6443 #. type: Plain text
6444 #: build/C/man1/pldd.1:40
6445 msgid ""
6446 "The B<pldd> command displays a list of the dynamic shared objects that are "
6447 "linked into the process with the specified process ID.  The list includes "
6448 "the libraries that have been dynamically loaded using B<dlopen>(3)."
6449 msgstr ""
6450
6451 #. type: TP
6452 #: build/C/man1/pldd.1:41 build/C/man1/sprof.1:66
6453 #, no-wrap
6454 msgid "B<-?>, B<--help>"
6455 msgstr ""
6456
6457 #. type: Plain text
6458 #: build/C/man1/pldd.1:44
6459 msgid "Display program help message."
6460 msgstr ""
6461
6462 #. type: Plain text
6463 #: build/C/man1/pldd.1:47
6464 msgid "Display a short usage message."
6465 msgstr ""
6466
6467 #. type: TP
6468 #: build/C/man1/pldd.1:47 build/C/man1/sprof.1:72
6469 #, no-wrap
6470 msgid "B<-V>, B<--version>"
6471 msgstr ""
6472
6473 #. type: Plain text
6474 #: build/C/man1/pldd.1:50
6475 msgid "Display the program version."
6476 msgstr ""
6477
6478 #. type: Plain text
6479 #: build/C/man1/pldd.1:53
6480 msgid "B<pldd> is available since glibc 2.15."
6481 msgstr ""
6482
6483 #.  There are man pages on Solaris and HP-UX.
6484 #. type: Plain text
6485 #: build/C/man1/pldd.1:60
6486 msgid ""
6487 "The B<pldd> command is not specified by POSIX.1.  Some other systems have a "
6488 "similar command."
6489 msgstr ""
6490
6491 #. type: Plain text
6492 #: build/C/man1/pldd.1:71
6493 msgid ""
6494 "On success, B<pldd> exits with the status 0.  If the specified process does "
6495 "not exist, the user does not have permission to access its dynamic shared "
6496 "object list, or no command-line arguments are supplied, B<pldd> exists with "
6497 "a status of 1.  If given an invalid option, it exits with the status 64."
6498 msgstr ""
6499
6500 #. type: Plain text
6501 #: build/C/man1/pldd.1:83
6502 #, no-wrap
6503 msgid ""
6504 "$ B<echo $$>               # Display PID of shell\n"
6505 "1143\n"
6506 "$ B<pldd $$>               # Display DSOs linked into the shell\n"
6507 "1143:\t/usr/bin/bash\n"
6508 "linux-vdso.so.1\n"
6509 "/lib64/libtinfo.so.5\n"
6510 "/lib64/libdl.so.2\n"
6511 "/lib64/libc.so.6\n"
6512 "/lib64/ld-linux-x86-64.so.2\n"
6513 "/lib64/libnss_files.so.2\n"
6514 msgstr ""
6515
6516 #. type: Plain text
6517 #: build/C/man1/pldd.1:86
6518 msgid "The command"
6519 msgstr ""
6520
6521 #. type: Plain text
6522 #: build/C/man1/pldd.1:88
6523 #, no-wrap
6524 msgid "     lsof -p PID\n"
6525 msgstr ""
6526
6527 #. type: Plain text
6528 #: build/C/man1/pldd.1:91
6529 msgid ""
6530 "also shows output that includes the dynamic shared objects that are linked "
6531 "into a process."
6532 msgstr ""
6533
6534 #. type: Plain text
6535 #: build/C/man1/pldd.1:96
6536 msgid "B<ldd>(1), B<lsof>(1), B<dlopen>(3), B<ld.so>(8)"
6537 msgstr ""
6538
6539 #. type: TH
6540 #: build/C/man7/rtld-audit.7:28
6541 #, no-wrap
6542 msgid "RTLD-AUDIT"
6543 msgstr ""
6544
6545 #. type: TH
6546 #: build/C/man7/rtld-audit.7:28
6547 #, no-wrap
6548 msgid "2012-07-07"
6549 msgstr ""
6550
6551 #. type: Plain text
6552 #: build/C/man7/rtld-audit.7:31
6553 msgid "rtld-audit - auditing API for the dynamic linker"
6554 msgstr ""
6555
6556 #. type: Plain text
6557 #: build/C/man7/rtld-audit.7:33
6558 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
6559 msgstr ""
6560
6561 #. type: Plain text
6562 #: build/C/man7/rtld-audit.7:35
6563 msgid "B<#include E<lt>link.hE<gt>>"
6564 msgstr ""
6565
6566 #. type: Plain text
6567 #: build/C/man7/rtld-audit.7:43
6568 msgid ""
6569 "The GNU dynamic linker (run-time linker)  provides an auditing API that "
6570 "allows an application to be notified when various dynamic linking events "
6571 "occur.  This API is very similar to the auditing interface provided by the "
6572 "Solaris run-time linker.  The necessary constants and prototypes are defined "
6573 "by including I<E<lt>link.hE<gt>>."
6574 msgstr ""
6575
6576 #. type: Plain text
6577 #: build/C/man7/rtld-audit.7:50
6578 msgid ""
6579 "To use this interface, the programmer creates a shared library that "
6580 "implements a standard set of function names.  Not all of the functions need "
6581 "to be implemented: in most cases, if the programmer is not interested in a "
6582 "particular class of auditing event, then no implementation needs to be "
6583 "provided for the corresponding auditing function."
6584 msgstr ""
6585
6586 #. type: Plain text
6587 #: build/C/man7/rtld-audit.7:58
6588 msgid ""
6589 "To employ the auditing interface, the environment variable B<LD_AUDIT> must "
6590 "be defined to contain a colon-separated list of shared libraries, each of "
6591 "which can implement (parts of) the auditing API.  When an auditable event "
6592 "occurs, the corresponding function is invoked in each library, in the order "
6593 "that the libraries are listed."
6594 msgstr ""
6595
6596 #. type: SS
6597 #: build/C/man7/rtld-audit.7:58
6598 #, no-wrap
6599 msgid "la_version()"
6600 msgstr ""
6601
6602 #. type: Plain text
6603 #: build/C/man7/rtld-audit.7:62
6604 #, no-wrap
6605 msgid "B<unsigned int la_version(unsigned int >I<version>B<);>\n"
6606 msgstr ""
6607
6608 #. type: Plain text
6609 #: build/C/man7/rtld-audit.7:74
6610 msgid ""
6611 "This is the only function that I<must> be defined by an auditing library: it "
6612 "performs the initial handshake between the dynamic linker and the auditing "
6613 "library.  When invoking this function, the dynamic linker passes, in "
6614 "I<version>, the highest version of the auditing interface that the linker "
6615 "supports.  If necessary, the auditing library can check that this version is "
6616 "sufficient for its requirements."
6617 msgstr ""
6618
6619 #. type: Plain text
6620 #: build/C/man7/rtld-audit.7:83
6621 msgid ""
6622 "As its function result, this function should return the version of the "
6623 "auditing interface that this auditing library expects to use (returning "
6624 "I<version> is acceptable).  If the returned value is 0, or a version that is "
6625 "greater than that supported by the dynamic linker, then the audit library is "
6626 "ignored."
6627 msgstr ""
6628
6629 #. type: SS
6630 #: build/C/man7/rtld-audit.7:83
6631 #, no-wrap
6632 msgid "la_objsearch()"
6633 msgstr ""
6634
6635 #. type: Plain text
6636 #: build/C/man7/rtld-audit.7:88
6637 #, no-wrap
6638 msgid ""
6639 "B<char *la_objsearch(const char *>I<name>B<, uintptr_t *>I<cookie>B<,>\n"
6640 "B<                   unsigned int >I<flag>B<);>\n"
6641 msgstr ""
6642
6643 #. type: Plain text
6644 #: build/C/man7/rtld-audit.7:99
6645 msgid ""
6646 "The dynamic linker invokes this function to inform the auditing library that "
6647 "it is about to search for a shared object.  The I<name> argument is the "
6648 "filename or pathname that is to be searched for.  I<cookie> identifies the "
6649 "shared object that initiated the search.  I<flag> is set to one of the "
6650 "following values:"
6651 msgstr ""
6652
6653 #. type: TP
6654 #: build/C/man7/rtld-audit.7:99
6655 #, no-wrap
6656 msgid "B<LA_SER_ORIG>"
6657 msgstr ""
6658
6659 #. type: Plain text
6660 #: build/C/man7/rtld-audit.7:108
6661 msgid ""
6662 "This is the original name that is being searched for.  Typically, this name "
6663 "comes from an ELF B<DT_NEEDED> entry, or is the I<filename> argument given "
6664 "to B<dlopen>(3)."
6665 msgstr ""
6666
6667 #. type: TP
6668 #: build/C/man7/rtld-audit.7:108
6669 #, no-wrap
6670 msgid "B<LA_SER_LIBPATH>"
6671 msgstr ""
6672
6673 #. type: Plain text
6674 #: build/C/man7/rtld-audit.7:113
6675 msgid "I<name> was created using a directory specified in B<LD_LIBRARY_PATH>."
6676 msgstr ""
6677
6678 #. type: TP
6679 #: build/C/man7/rtld-audit.7:113
6680 #, no-wrap
6681 msgid "B<LA_SER_RUNPATH>"
6682 msgstr ""
6683
6684 #. type: Plain text
6685 #: build/C/man7/rtld-audit.7:121
6686 msgid ""
6687 "I<name> was created using a directory specified in an ELF B<DT_RPATH> or "
6688 "B<DT_RUNPATH> list."
6689 msgstr ""
6690
6691 #. type: TP
6692 #: build/C/man7/rtld-audit.7:121
6693 #, no-wrap
6694 msgid "B<LA_SER_CONFIG>"
6695 msgstr ""
6696
6697 #. type: Plain text
6698 #: build/C/man7/rtld-audit.7:128
6699 msgid "I<name> was found via the B<ldconfig>(8)  cache (I</etc/ld.so.cache>)."
6700 msgstr ""
6701
6702 #. type: TP
6703 #: build/C/man7/rtld-audit.7:128
6704 #, no-wrap
6705 msgid "B<LA_SER_DEFAULT>"
6706 msgstr ""
6707
6708 #. type: Plain text
6709 #: build/C/man7/rtld-audit.7:132
6710 msgid "I<name> was found via a search of one of the default directories."
6711 msgstr ""
6712
6713 #. type: TP
6714 #: build/C/man7/rtld-audit.7:132
6715 #, no-wrap
6716 msgid "B<LA_SER_SECURE>"
6717 msgstr ""
6718
6719 #. type: Plain text
6720 #: build/C/man7/rtld-audit.7:136
6721 msgid "I<name> is specific to a secure object (unused on Linux)."
6722 msgstr ""
6723
6724 #. type: Plain text
6725 #: build/C/man7/rtld-audit.7:145
6726 msgid ""
6727 "As its function result, B<la_objsearch>()  returns the pathname that the "
6728 "dynamic linker should use for further processing.  If NULL is returned, then "
6729 "this pathname is ignored for further processing.  If this audit library "
6730 "simply intends to monitor search paths, then I<name> should be returned."
6731 msgstr ""
6732
6733 #. type: SS
6734 #: build/C/man7/rtld-audit.7:145
6735 #, no-wrap
6736 msgid "la_activity()"
6737 msgstr ""
6738
6739 #. type: Plain text
6740 #: build/C/man7/rtld-audit.7:149
6741 #, no-wrap
6742 msgid "B<void la_activity( uintptr_t *>I<cookie>B<, unsigned int >I<flag>B<);>\n"
6743 msgstr ""
6744
6745 #. type: Plain text
6746 #: build/C/man7/rtld-audit.7:158
6747 msgid ""
6748 "The dynamic linker calls this function to inform the auditing library that "
6749 "link-map activity is occurring.  I<cookie> identifies the object at the head "
6750 "of the link map.  When the dynamic linker invokes this function, I<flag> is "
6751 "set to one of the following values:"
6752 msgstr ""
6753
6754 #. type: TP
6755 #: build/C/man7/rtld-audit.7:158
6756 #, no-wrap
6757 msgid "B<LA_ACT_ADD>"
6758 msgstr ""
6759
6760 #. type: Plain text
6761 #: build/C/man7/rtld-audit.7:161
6762 msgid "New objects are being added to the link map."
6763 msgstr ""
6764
6765 #. type: TP
6766 #: build/C/man7/rtld-audit.7:161
6767 #, no-wrap
6768 msgid "B<LA_ACT_DELETE>"
6769 msgstr ""
6770
6771 #. type: Plain text
6772 #: build/C/man7/rtld-audit.7:164
6773 msgid "Objects are being removed from the link map."
6774 msgstr ""
6775
6776 #. type: TP
6777 #: build/C/man7/rtld-audit.7:164
6778 #, no-wrap
6779 msgid "B<LA_ACT_CONSISTENT>"
6780 msgstr ""
6781
6782 #. type: Plain text
6783 #: build/C/man7/rtld-audit.7:167
6784 msgid "Link-map activity has been completed: the map is once again consistent."
6785 msgstr ""
6786
6787 #. type: SS
6788 #: build/C/man7/rtld-audit.7:167
6789 #, no-wrap
6790 msgid "la_objopen()"
6791 msgstr ""
6792
6793 #. type: Plain text
6794 #: build/C/man7/rtld-audit.7:172
6795 #, no-wrap
6796 msgid ""
6797 "B<unsigned int la_objopen(struct link_map *>I<map>B<, Lmid_t >I<lmid>B<,>\n"
6798 "B<                        uintptr_t *>I<cookie>B<);>\n"
6799 msgstr ""
6800
6801 #. type: Plain text
6802 #: build/C/man7/rtld-audit.7:181
6803 msgid ""
6804 "The dynamic linker calls this function when a new shared object is loaded.  "
6805 "The I<map> argument is a pointer to a link-map structure that describes the "
6806 "object.  The I<lmid> field has one of the following values"
6807 msgstr ""
6808
6809 #. type: TP
6810 #: build/C/man7/rtld-audit.7:181
6811 #, no-wrap
6812 msgid "B<LM_ID_BASE>"
6813 msgstr ""
6814
6815 #. type: Plain text
6816 #: build/C/man7/rtld-audit.7:184
6817 msgid "Link map is part of the initial namespace."
6818 msgstr ""
6819
6820 #. type: TP
6821 #: build/C/man7/rtld-audit.7:184
6822 #, no-wrap
6823 msgid "B<LM_ID_NEWLM>"
6824 msgstr ""
6825
6826 #. type: Plain text
6827 #: build/C/man7/rtld-audit.7:188
6828 msgid "Link map is part of a new namespace requested via B<dlmopen>(3)."
6829 msgstr ""
6830
6831 #. type: Plain text
6832 #: build/C/man7/rtld-audit.7:196
6833 msgid ""
6834 "I<cookie> is a pointer to an identifier for this object.  The identifier is "
6835 "provided to later calls to functions in the auditing library in order to "
6836 "identify this object.  This identifier is initialized to point to object's "
6837 "link map, but the audit library can change the identifier to some other "
6838 "value that it may prefer to use to identify the object."
6839 msgstr ""
6840
6841 #. type: Plain text
6842 #: build/C/man7/rtld-audit.7:203
6843 msgid ""
6844 "As its return value, B<la_objopen>()  returns a bit mask created by ORing "
6845 "zero or more of the following constants, which allow the auditing library to "
6846 "select the objects to be monitored by B<la_symbind*>():"
6847 msgstr ""
6848
6849 #. type: TP
6850 #: build/C/man7/rtld-audit.7:203
6851 #, no-wrap
6852 msgid "B<LA_FLG_BINDTO>"
6853 msgstr ""
6854
6855 #. type: Plain text
6856 #: build/C/man7/rtld-audit.7:206
6857 msgid "Audit symbol bindings to this object."
6858 msgstr ""
6859
6860 #. type: TP
6861 #: build/C/man7/rtld-audit.7:206
6862 #, no-wrap
6863 msgid "B<LA_FLG_BINDFROM>"
6864 msgstr ""
6865
6866 #. type: Plain text
6867 #: build/C/man7/rtld-audit.7:209
6868 msgid "Audit symbol bindings from this object."
6869 msgstr ""
6870
6871 #. type: Plain text
6872 #: build/C/man7/rtld-audit.7:213
6873 msgid ""
6874 "A return value of 0 from B<la_objopen>()  indicates that no symbol bindings "
6875 "should be audited for this object."
6876 msgstr ""
6877
6878 #. type: SS
6879 #: build/C/man7/rtld-audit.7:213
6880 #, no-wrap
6881 msgid "la_objclose()"
6882 msgstr ""
6883
6884 #. type: Plain text
6885 #: build/C/man7/rtld-audit.7:217
6886 #, no-wrap
6887 msgid "B<unsigned int la_objclose(uintptr_t *>I<cookie>B<);>\n"
6888 msgstr ""
6889
6890 #. type: Plain text
6891 #: build/C/man7/rtld-audit.7:226
6892 msgid ""
6893 "The dynamic linker invokes this function after any finalization code for the "
6894 "object has been executed, before the object is unloaded.  The I<cookie> "
6895 "argument is the identifier obtained from a previous invocation of "
6896 "B<la_objopen>()."
6897 msgstr ""
6898
6899 #. type: Plain text
6900 #: build/C/man7/rtld-audit.7:230
6901 msgid ""
6902 "In the current implementation, the value returned by B<la_objclose>()  is "
6903 "ignored."
6904 msgstr ""
6905
6906 #. type: SS
6907 #: build/C/man7/rtld-audit.7:230
6908 #, no-wrap
6909 msgid "la_preinit()"
6910 msgstr ""
6911
6912 #. type: Plain text
6913 #: build/C/man7/rtld-audit.7:234
6914 #, no-wrap
6915 msgid "B<void la_preinit(uintptr_t *>I<cookie>B<);>\n"
6916 msgstr ""
6917
6918 #. type: Plain text
6919 #: build/C/man7/rtld-audit.7:244
6920 msgid ""
6921 "The dynamic linker invokes this function after all shared objects have been "
6922 "loaded, before control is passed to the application (i.e., before calling "
6923 "I<main>()).  Note that I<main>()  may still later dynamically load objects "
6924 "using B<dlopen>(3)."
6925 msgstr ""
6926
6927 #. type: SS
6928 #: build/C/man7/rtld-audit.7:244
6929 #, no-wrap
6930 msgid "la_symbind*()"
6931 msgstr ""
6932
6933 #. type: Plain text
6934 #: build/C/man7/rtld-audit.7:253
6935 #, no-wrap
6936 msgid ""
6937 "B<uintptr_t la_symbind32(Elf32_Sym *>I<sym>B<, unsigned int >I<ndx>B<,>\n"
6938 "B<                       uintptr_t *>I<refcook>B<, uintptr_t "
6939 "*>I<defcook>B<,>\n"
6940 "B<                       unsigned int *>I<flags>B<, const char "
6941 "*>I<symname>B<);>\n"
6942 "B<uintptr_t la_symbind64(Elf64_Sym *>I<sym>B<, unsigned int >I<ndx>B<,>\n"
6943 "B<                       uintptr_t *>I<refcook>B<, uintptr_t "
6944 "*>I<defcook>B<,>\n"
6945 "B<                       unsigned int *>I<flags>B<, const char "
6946 "*>I<symname>B<);>\n"
6947 msgstr ""
6948
6949 #. type: Plain text
6950 #: build/C/man7/rtld-audit.7:265
6951 msgid ""
6952 "The dynamic linker invokes one of these functions when a symbol binding "
6953 "occurs between two shared objects that have been marked for auditing "
6954 "notification by B<la_objopen>().  The B<la_symbind32>()  function is "
6955 "employed on 32-bit platforms; the B<la_symbind64>()  function is employed on "
6956 "64-bit platforms."
6957 msgstr ""
6958
6959 #. type: Plain text
6960 #: build/C/man7/rtld-audit.7:275
6961 msgid ""
6962 "The I<sym> argument is a pointer to a structure that provides information "
6963 "about the symbol being bound.  The structure definition is shown in "
6964 "I<E<lt>elf.hE<gt>>.  Among the fields of this structure, I<st_value> "
6965 "indicates the address to which the symbol is bound."
6966 msgstr ""
6967
6968 #. type: Plain text
6969 #: build/C/man7/rtld-audit.7:280
6970 msgid ""
6971 "The I<ndx> argument gives the index of the symbol in the symbol table of the "
6972 "bound shared object."
6973 msgstr ""
6974
6975 #. type: Plain text
6976 #: build/C/man7/rtld-audit.7:295
6977 msgid ""
6978 "The I<refcook> argument identifies the shared object that is making the "
6979 "symbol reference; this is the same identifier that is provided to the "
6980 "B<la_objopen>()  function that returned B<LA_FLG_BINDFROM>.  The I<defcook> "
6981 "argument identifies the shared object that defines the referenced symbol; "
6982 "this is the same identifier that is provided to the B<la_objopen>()  "
6983 "function that returned B<LA_FLG_BINDTO>."
6984 msgstr ""
6985
6986 #. type: Plain text
6987 #: build/C/man7/rtld-audit.7:299
6988 msgid "The I<symname> argument points a string containing the name of the symbol."
6989 msgstr ""
6990
6991 #.  LA_SYMB_STRUCTCALL appears to be unused
6992 #. type: Plain text
6993 #: build/C/man7/rtld-audit.7:307
6994 msgid ""
6995 "The I<flags> argument is a bit mask that both provides information about the "
6996 "symbol and can be used to modify further auditing of this PLT (Procedure "
6997 "Linkage Table) entry.  The dynamic linker may supply the following bit "
6998 "values in this argument:"
6999 msgstr ""
7000
7001 #. type: TP
7002 #: build/C/man7/rtld-audit.7:307
7003 #, no-wrap
7004 msgid "B<LA_SYMB_DLSYM>"
7005 msgstr ""
7006
7007 #. type: Plain text
7008 #: build/C/man7/rtld-audit.7:311
7009 msgid "The binding resulted from a call to B<dlsym>(3)."
7010 msgstr ""
7011
7012 #. type: TP
7013 #: build/C/man7/rtld-audit.7:311
7014 #, no-wrap
7015 msgid "B<LA_SYMB_ALTVALUE>"
7016 msgstr ""
7017
7018 #. type: Plain text
7019 #: build/C/man7/rtld-audit.7:316
7020 msgid ""
7021 "A previous B<la_symbind*>()  call returned an alternate value for this "
7022 "symbol."
7023 msgstr ""
7024
7025 #.  pltenter/pltexit are called for non-dynamically loaded libraries,
7026 #.  but don't seem to be called for dynamically loaded libs?
7027 #.  Is this the same on Solaris?
7028 #. type: Plain text
7029 #: build/C/man7/rtld-audit.7:330
7030 msgid ""
7031 "By default, if the auditing library implements B<la_pltenter>()  and "
7032 "B<la_pltexit>()  functions (see below), then these functions are invoked, "
7033 "after B<la_symbind>(), for PLT entries, each time the symbol is referenced.  "
7034 "The following flags can be ORed into I<*flags> to change this default "
7035 "behavior:"
7036 msgstr ""
7037
7038 #. type: TP
7039 #: build/C/man7/rtld-audit.7:330
7040 #, no-wrap
7041 msgid "B<LA_SYMB_NOPLTENTER>"
7042 msgstr ""
7043
7044 #. type: Plain text
7045 #: build/C/man7/rtld-audit.7:335
7046 msgid "Don't call B<la_pltenter>()  for this symbol."
7047 msgstr ""
7048
7049 #. type: TP
7050 #: build/C/man7/rtld-audit.7:335
7051 #, no-wrap
7052 msgid "B<LA_SYMB_NOPLTEXIT>"
7053 msgstr ""
7054
7055 #. type: Plain text
7056 #: build/C/man7/rtld-audit.7:340
7057 msgid "Don't call B<la_pltexit>()  for this symbol."
7058 msgstr ""
7059
7060 #. type: Plain text
7061 #: build/C/man7/rtld-audit.7:351
7062 msgid ""
7063 "The return value of B<la_symbind32>()  and B<la_symbind64>()  is the address "
7064 "to which control should be passed after the function returns.  If the "
7065 "auditing library is simply monitoring symbol bindings, then it should return "
7066 "I<sym-E<gt>st_value>.  A different value may be returned if the library "
7067 "wishes to direct control to an alternate location."
7068 msgstr ""
7069
7070 #. type: SS
7071 #: build/C/man7/rtld-audit.7:351
7072 #, no-wrap
7073 msgid "la_pltenter()"
7074 msgstr ""
7075
7076 #. type: Plain text
7077 #: build/C/man7/rtld-audit.7:357 build/C/man7/rtld-audit.7:417
7078 msgid ""
7079 "The precise name and argument types for this function depend on the hardware "
7080 "platform.  (The appropriate definition is supplied by I<E<lt>link.hE<gt>>.)  "
7081 "Here is the definition for x86-32:"
7082 msgstr ""
7083
7084 #. type: Plain text
7085 #: build/C/man7/rtld-audit.7:363
7086 #, no-wrap
7087 msgid ""
7088 "B<Elf32_Addr la_i86_gnu_pltenter(Elf32_Sym *>I<sym>B<, unsigned int "
7089 ">I<ndx>B<,>\n"
7090 "B<                 uintptr_t *>I<refcook>B<, uintptr_t *>I<defcook>B<,>\n"
7091 "B<                 La_i86_regs *>I<regs>B<, unsigned int *>I<flags>B<,>\n"
7092 "B<                 const char *>I<symname>B<, long int "
7093 "*>I<framesizep>B<);>\n"
7094 msgstr ""
7095
7096 #. type: Plain text
7097 #: build/C/man7/rtld-audit.7:367
7098 msgid ""
7099 "This function is invoked just before a PLT entry is called, between two "
7100 "shared objects that have been marked for binding notification."
7101 msgstr ""
7102
7103 #. type: Plain text
7104 #: build/C/man7/rtld-audit.7:377 build/C/man7/rtld-audit.7:440
7105 msgid ""
7106 "The I<sym>, I<ndx>, I<refcook>, I<defcook>, and I<symname> are as for "
7107 "B<la_symbind*>()."
7108 msgstr ""
7109
7110 #. type: Plain text
7111 #: build/C/man7/rtld-audit.7:384
7112 msgid ""
7113 "The I<regs> argument points to a structure (defined in I<E<lt>link.hE<gt>>)  "
7114 "containing the values of registers to be used for the call to this PLT "
7115 "entry."
7116 msgstr ""
7117
7118 #. type: Plain text
7119 #: build/C/man7/rtld-audit.7:390
7120 msgid ""
7121 "The I<flags> argument points to a bit mask that conveys information about, "
7122 "and can be used to modify subsequent auditing of, this PLT entry, as for "
7123 "B<la_symbind*>()."
7124 msgstr ""
7125
7126 #.  FIXME . Is the following correct?
7127 #. type: Plain text
7128 #: build/C/man7/rtld-audit.7:406
7129 msgid ""
7130 "The I<framesizep> argument points to a I<long\\ int> buffer that can be used "
7131 "to explicitly set the frame size used for the call to this PLT entry.  If "
7132 "different B<la_pltenter>()  invocations for this symbol return different "
7133 "values, then the maximum returned value is used.  The B<la_pltenter>()  "
7134 "function is called only if this buffer is explicitly set to a suitable "
7135 "value."
7136 msgstr ""
7137
7138 #. type: Plain text
7139 #: build/C/man7/rtld-audit.7:411
7140 msgid "The return value of B<la_pltenter>()  is as for B<la_symbind*>()."
7141 msgstr ""
7142
7143 #. type: SS
7144 #: build/C/man7/rtld-audit.7:411
7145 #, no-wrap
7146 msgid "la_pltexit()"
7147 msgstr ""
7148
7149 #. type: Plain text
7150 #: build/C/man7/rtld-audit.7:423
7151 #, no-wrap
7152 msgid ""
7153 "B<unsigned int la_i86_gnu_pltexit(Elf32_Sym *>I<sym>B<, unsigned int "
7154 ">I<ndx>B<,>\n"
7155 "B<                 uintptr_t *>I<refcook>B<, uintptr_t *>I<defcook>B<,>\n"
7156 "B<                 const La_i86_regs *>I<inregs>B<, La_i86_retval "
7157 "*>I<outregs>B<,>\n"
7158 "B<                 const char *>I<symname>B<);>\n"
7159 msgstr ""
7160
7161 #. type: Plain text
7162 #: build/C/man7/rtld-audit.7:430
7163 msgid ""
7164 "This function is called when a PLT entry, made between two shared objects "
7165 "that have been marked for binding notification, returns.  The function is "
7166 "called just before control returns to the caller of the PLT entry."
7167 msgstr ""
7168
7169 #. type: Plain text
7170 #: build/C/man7/rtld-audit.7:453
7171 msgid ""
7172 "The I<inregs> argument points to a structure (defined in "
7173 "I<E<lt>link.hE<gt>>)  containing the values of registers used for the call "
7174 "to this PLT entry.  The I<outregs> argument points to a structure (defined "
7175 "in I<E<lt>link.hE<gt>>)  containing return values for the call to this PLT "
7176 "entry.  These values can be modified by the caller, and the changes will be "
7177 "visible to the caller of the PLT entry."
7178 msgstr ""
7179
7180 #.  This differs from Solaris, where an audit library that monitors
7181 #.  symbol binding should return the value of the 'retval' argument
7182 #.  (not provided by GNU, but equivalent to returning outregs->lrv_eax
7183 #.  on (say) x86-32).
7184 #. type: Plain text
7185 #: build/C/man7/rtld-audit.7:461
7186 msgid ""
7187 "In the current GNU implementation, the return value of B<la_pltexit>()  is "
7188 "ignored."
7189 msgstr ""
7190
7191 #. type: Plain text
7192 #: build/C/man7/rtld-audit.7:467
7193 msgid ""
7194 "This API is nonstandard, but very similar to the Solaris API, described in "
7195 "the Solaris I<Linker and Libraries Guide>, in the chapter I<Runtime Linker "
7196 "Auditing Interface>."
7197 msgstr ""
7198
7199 #. type: Plain text
7200 #: build/C/man7/rtld-audit.7:470
7201 msgid "Note the following differences from the Solaris dynamic linker auditing API:"
7202 msgstr ""
7203
7204 #. type: IP
7205 #: build/C/man7/rtld-audit.7:470 build/C/man7/rtld-audit.7:474 build/C/man7/rtld-audit.7:482
7206 #, no-wrap
7207 msgid "*"
7208 msgstr ""
7209
7210 #. type: Plain text
7211 #: build/C/man7/rtld-audit.7:474
7212 msgid ""
7213 "The Solaris B<la_objfilter>()  interface is not supported by the GNU "
7214 "implementation."
7215 msgstr ""
7216
7217 #. type: Plain text
7218 #: build/C/man7/rtld-audit.7:482
7219 msgid ""
7220 "The Solaris B<la_symbind32>()  and B<la_pltexit>()  functions do not provide "
7221 "a I<symname> argument."
7222 msgstr ""
7223
7224 #. type: Plain text
7225 #: build/C/man7/rtld-audit.7:492
7226 msgid ""
7227 "The Solaris B<la_pltexit>()  function does not provide I<inregs> and "
7228 "I<outregs> arguments (but does provide a I<retval> argument with the "
7229 "function return value)."
7230 msgstr ""
7231
7232 #.  FIXME . Specifying multiple audit libraries doesn't work on GNU.
7233 #.  My simple tests on Solaris work okay, but not on Linux -- mtk, Jan 2009
7234 #.  glibc bug filed: http://sourceware.org/bugzilla/show_bug.cgi?id=9733
7235 #.  Reportedly, this is fixed on 16 Mar 2009 (i.e., for glibc 2.10)
7236 #. type: Plain text
7237 #: build/C/man7/rtld-audit.7:502
7238 msgid ""
7239 "In glibc versions up to and include 2.9, specifying more than one audit "
7240 "library in B<LD_AUDIT> results in a run-time crash.  This is reportedly "
7241 "fixed in glibc 2.10."
7242 msgstr ""
7243
7244 #. type: Plain text
7245 #: build/C/man7/rtld-audit.7:506
7246 #, no-wrap
7247 msgid ""
7248 "#include E<lt>link.hE<gt>\n"
7249 "#include E<lt>stdio.hE<gt>\n"
7250 msgstr ""
7251
7252 #. type: Plain text
7253 #: build/C/man7/rtld-audit.7:511
7254 #, no-wrap
7255 msgid ""
7256 "unsigned int\n"
7257 "la_version(unsigned int version)\n"
7258 "{\n"
7259 "    printf(\"la_version(): %d\\en\", version);\n"
7260 msgstr ""
7261
7262 #. type: Plain text
7263 #: build/C/man7/rtld-audit.7:514
7264 #, no-wrap
7265 msgid ""
7266 "    return version;\n"
7267 "}\n"
7268 msgstr ""
7269
7270 #. type: Plain text
7271 #: build/C/man7/rtld-audit.7:527
7272 #, no-wrap
7273 msgid ""
7274 "char *\n"
7275 "la_objsearch(const char *name, uintptr_t *cookie, unsigned int flag)\n"
7276 "{\n"
7277 "    printf(\"la_objsearch(): name = %s; cookie = %x\", name, cookie);\n"
7278 "    printf(\"; flag = %s\\en\",\n"
7279 "            (flag == LA_SER_ORIG) ?    \"LA_SER_ORIG\" :\n"
7280 "            (flag == LA_SER_LIBPATH) ? \"LA_SER_LIBPATH\" :\n"
7281 "            (flag == LA_SER_RUNPATH) ? \"LA_SER_RUNPATH\" :\n"
7282 "            (flag == LA_SER_DEFAULT) ? \"LA_SER_DEFAULT\" :\n"
7283 "            (flag == LA_SER_CONFIG) ?  \"LA_SER_CONFIG\" :\n"
7284 "            (flag == LA_SER_SECURE) ?  \"LA_SER_SECURE\" :\n"
7285 "            \"???\");\n"
7286 msgstr ""
7287
7288 #. type: Plain text
7289 #: build/C/man7/rtld-audit.7:530
7290 #, no-wrap
7291 msgid ""
7292 "    return name;\n"
7293 "}\n"
7294 msgstr ""
7295
7296 #. type: Plain text
7297 #: build/C/man7/rtld-audit.7:540
7298 #, no-wrap
7299 msgid ""
7300 "void\n"
7301 "la_activity (uintptr_t *cookie, unsigned int flag)\n"
7302 "{\n"
7303 "    printf(\"la_activity(): cookie = %x; flag = %s\\en\", cookie,\n"
7304 "            (flag == LA_ACT_CONSISTENT) ? \"LA_ACT_CONSISTENT\" :\n"
7305 "            (flag == LA_ACT_ADD) ?        \"LA_ACT_ADD\" :\n"
7306 "            (flag == LA_ACT_DELETE) ?     \"LA_ACT_DELETE\" :\n"
7307 "            \"???\");\n"
7308 "}\n"
7309 msgstr ""
7310
7311 #. type: Plain text
7312 #: build/C/man7/rtld-audit.7:550
7313 #, no-wrap
7314 msgid ""
7315 "unsigned int\n"
7316 "la_objopen(struct link_map *map, Lmid_t lmid, uintptr_t *cookie)\n"
7317 "{\n"
7318 "    printf(\"la_objopen(): loading \\e\"%s\\e\"; lmid = %s; "
7319 "cookie=%x\\en\",\n"
7320 "            map-E<gt>l_name,\n"
7321 "            (lmid == LM_ID_BASE) ?  \"LM_ID_BASE\" :\n"
7322 "            (lmid == LM_ID_NEWLM) ? \"LM_ID_NEWLM\" :\n"
7323 "            \"???\",\n"
7324 "            cookie);\n"
7325 msgstr ""
7326
7327 #. type: Plain text
7328 #: build/C/man7/rtld-audit.7:553
7329 #, no-wrap
7330 msgid ""
7331 "    return LA_FLG_BINDTO | LA_FLG_BINDFROM;\n"
7332 "}\n"
7333 msgstr ""
7334
7335 #. type: Plain text
7336 #: build/C/man7/rtld-audit.7:558
7337 #, no-wrap
7338 msgid ""
7339 "unsigned int\n"
7340 "la_objclose (uintptr_t *cookie)\n"
7341 "{\n"
7342 "    printf(\"la_objclose(): %x\\en\", cookie);\n"
7343 msgstr ""
7344
7345 #. type: Plain text
7346 #: build/C/man7/rtld-audit.7:561
7347 #, no-wrap
7348 msgid ""
7349 "    return 0;\n"
7350 "}\n"
7351 msgstr ""
7352
7353 #. type: Plain text
7354 #: build/C/man7/rtld-audit.7:567
7355 #, no-wrap
7356 msgid ""
7357 "void\n"
7358 "la_preinit(uintptr_t *cookie)\n"
7359 "{\n"
7360 "    printf(\"la_preinit(): %x\\en\", cookie);\n"
7361 "}\n"
7362 msgstr ""
7363
7364 #. type: Plain text
7365 #: build/C/man7/rtld-audit.7:576
7366 #, no-wrap
7367 msgid ""
7368 "uintptr_t\n"
7369 "la_symbind32(Elf32_Sym *sym, unsigned int ndx, uintptr_t *refcook,\n"
7370 "        uintptr_t *defcook, unsigned int *flags, const char *symname)\n"
7371 "{\n"
7372 "    printf(\"la_symbind32(): symname = %s; sym-E<gt>st_value = %p\\en\",\n"
7373 "            symname, sym-E<gt>st_value);\n"
7374 "    printf(\"        ndx = %d; flags = 0x%x\", ndx, *flags);\n"
7375 "    printf(\"; refcook = %x; defcook = %x\\en\", refcook, defcook);\n"
7376 msgstr ""
7377
7378 #. type: Plain text
7379 #: build/C/man7/rtld-audit.7:579 build/C/man7/rtld-audit.7:591 build/C/man7/rtld-audit.7:601
7380 #, no-wrap
7381 msgid ""
7382 "    return sym-E<gt>st_value;\n"
7383 "}\n"
7384 msgstr ""
7385
7386 #. type: Plain text
7387 #: build/C/man7/rtld-audit.7:588
7388 #, no-wrap
7389 msgid ""
7390 "uintptr_t\n"
7391 "la_symbind64(Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,\n"
7392 "        uintptr_t *defcook, unsigned int *flags, const char *symname)\n"
7393 "{\n"
7394 "    printf(\"la_symbind64(): symname = %s; sym-E<gt>st_value = %p\\en\",\n"
7395 "            symname, sym-E<gt>st_value);\n"
7396 "    printf(\"        ndx = %d; flags = 0x%x\", ndx, *flags);\n"
7397 "    printf(\"; refcook = %x; defcook = %x\\en\", refcook, defcook);\n"
7398 msgstr ""
7399
7400 #. type: Plain text
7401 #: build/C/man7/rtld-audit.7:598
7402 #, no-wrap
7403 msgid ""
7404 "Elf32_Addr\n"
7405 "la_i86_gnu_pltenter(Elf32_Sym *sym, unsigned int ndx,\n"
7406 "        uintptr_t *refcook, uintptr_t *defcook, La_i86_regs *regs,\n"
7407 "        unsigned int *flags, const char *symname, long int *framesizep)\n"
7408 "{\n"
7409 "    printf(\"la_i86_gnu_pltenter(): %s (%p)\\en\", symname, "
7410 "sym-E<gt>st_value);\n"
7411 msgstr ""
7412
7413 #. type: Plain text
7414 #: build/C/man7/rtld-audit.7:607
7415 msgid "B<ldd>(1), B<dlopen>(3), B<ld.so>(8), B<ldconfig>(8)"
7416 msgstr ""
7417
7418 #. type: TH
7419 #: build/C/man8/sln.8:25
7420 #, no-wrap
7421 msgid "SLN"
7422 msgstr ""
7423
7424 #. type: TH
7425 #: build/C/man8/sln.8:25
7426 #, no-wrap
7427 msgid "2013-02-10"
7428 msgstr ""
7429
7430 #. type: Plain text
7431 #: build/C/man8/sln.8:28
7432 msgid "sln - create symbolic links"
7433 msgstr ""
7434
7435 #. type: Plain text
7436 #: build/C/man8/sln.8:30
7437 msgid "B<sln>I< source dest>"
7438 msgstr ""
7439
7440 #. type: Plain text
7441 #: build/C/man8/sln.8:32
7442 msgid "B<sln>I< filelist>"
7443 msgstr ""
7444
7445 #. type: Plain text
7446 #: build/C/man8/sln.8:42
7447 msgid ""
7448 "The B<sln> program creates symbolic links.  Unlike the B<ln>(1)  program, it "
7449 "is statically linked.  This means that if for some reason the dynamic linker "
7450 "is not working, B<sln> can be used to make symbolic links to dynamic "
7451 "libraries."
7452 msgstr ""
7453
7454 #. type: Plain text
7455 #: build/C/man8/sln.8:48
7456 msgid ""
7457 "The command line has two forms.  In the first form, it creates I<dest> as a "
7458 "new symbolic link to I<source>."
7459 msgstr ""
7460
7461 #. type: Plain text
7462 #: build/C/man8/sln.8:56
7463 msgid ""
7464 "In the second form, I<filelist> is a list of space-separated pathname pairs, "
7465 "and the effect is as if B<sln> was executed once for each line of the file, "
7466 "with the two pathnames as the arguments."
7467 msgstr ""
7468
7469 #. type: Plain text
7470 #: build/C/man8/sln.8:60
7471 msgid "The B<sln> program supports no command-line options."
7472 msgstr ""
7473
7474 #. type: Plain text
7475 #: build/C/man8/sln.8:64
7476 msgid "B<ln>(1), B<ldconfig>(8), B<ld.so>(8)"
7477 msgstr ""
7478
7479 #. type: TH
7480 #: build/C/man1/sprof.1:25
7481 #, no-wrap
7482 msgid "SPROF"
7483 msgstr ""
7484
7485 #. type: TH
7486 #: build/C/man1/sprof.1:25
7487 #, no-wrap
7488 msgid "2014-06-24"
7489 msgstr ""
7490
7491 #. type: Plain text
7492 #: build/C/man1/sprof.1:28
7493 msgid "sprof - read and display shared object profiling data"
7494 msgstr ""
7495
7496 #. type: Plain text
7497 #: build/C/man1/sprof.1:32
7498 #, no-wrap
7499 msgid "B<sprof> [I<option>]... I<shared-object-path> [I<profile-data-path>]\n"
7500 msgstr ""
7501
7502 #. type: Plain text
7503 #: build/C/man1/sprof.1:46
7504 msgid ""
7505 "The B<sprof> command displays a profiling summary for the shared object "
7506 "specified as its first command-line argument.  The profiling summary is "
7507 "created using previously generated profiling data in the (optional) second "
7508 "command-line argument.  If the profiling data pathname is omitted, then "
7509 "B<sprof> will attempt to deduce it using the soname of the shared object, "
7510 "looking for a file with the name I<E<lt>sonameE<gt>.profile> in the current "
7511 "directory."
7512 msgstr ""
7513
7514 #. type: Plain text
7515 #: build/C/man1/sprof.1:49
7516 msgid ""
7517 "The following command-line options specify the profile output to be "
7518 "produced:"
7519 msgstr ""
7520
7521 #. type: TP
7522 #: build/C/man1/sprof.1:49
7523 #, no-wrap
7524 msgid "B<-c>, B<--call-pairs>"
7525 msgstr ""
7526
7527 #. type: Plain text
7528 #: build/C/man1/sprof.1:54
7529 msgid ""
7530 "Print a list of pairs of call paths for the interfaces exported by the "
7531 "shared object, along with the number of times each path is used."
7532 msgstr ""
7533
7534 #. type: TP
7535 #: build/C/man1/sprof.1:54
7536 #, no-wrap
7537 msgid "B<-p>, B<--flat-profile>"
7538 msgstr ""
7539
7540 #. type: Plain text
7541 #: build/C/man1/sprof.1:58
7542 msgid ""
7543 "Generate a flat profile of all of the functions in the monitored object, "
7544 "with counts and ticks."
7545 msgstr ""
7546
7547 #. type: TP
7548 #: build/C/man1/sprof.1:58
7549 #, no-wrap
7550 msgid "B<-q>, B<--graph>"
7551 msgstr ""
7552
7553 #. type: Plain text
7554 #: build/C/man1/sprof.1:61
7555 msgid "Generate a call graph."
7556 msgstr ""
7557
7558 #. type: Plain text
7559 #: build/C/man1/sprof.1:64
7560 msgid ""
7561 "If none of the above options is specified, then the default behavior is to "
7562 "display a flat profile and a call graph."
7563 msgstr ""
7564
7565 #. type: Plain text
7566 #: build/C/man1/sprof.1:66
7567 msgid "The following additional command-line options are available:"
7568 msgstr ""
7569
7570 #. type: Plain text
7571 #: build/C/man1/sprof.1:69
7572 msgid "Display a summary of command-line options and arguments and exit."
7573 msgstr ""
7574
7575 #. type: Plain text
7576 #: build/C/man1/sprof.1:72
7577 msgid "Display a short usage message and exit."
7578 msgstr ""
7579
7580 #. type: Plain text
7581 #: build/C/man1/sprof.1:75
7582 msgid "Display the program version and exit."
7583 msgstr ""
7584
7585 #. type: Plain text
7586 #: build/C/man1/sprof.1:79
7587 msgid "The B<sprof> command is a GNU extension, not present in POSIX.1."
7588 msgstr ""
7589
7590 #. type: Plain text
7591 #: build/C/man1/sprof.1:85
7592 msgid ""
7593 "The following example demonstrates the use of B<sprof>.  The example "
7594 "consists of a main program that calls two functions in a shared library.  "
7595 "First, the code of the main program:"
7596 msgstr ""
7597
7598 #. type: Plain text
7599 #: build/C/man1/sprof.1:90
7600 #, no-wrap
7601 msgid ""
7602 "$ B<cat prog.c>\n"
7603 "#include E<lt>stdlib.hE<gt>\n"
7604 msgstr ""
7605
7606 #. type: Plain text
7607 #: build/C/man1/sprof.1:93
7608 #, no-wrap
7609 msgid ""
7610 "void x1(void);\n"
7611 "void x2(void);\n"
7612 msgstr ""
7613
7614 #. type: Plain text
7615 #: build/C/man1/sprof.1:101
7616 #, no-wrap
7617 msgid ""
7618 "int\n"
7619 "main(int argc, char *argv[])\n"
7620 "{\n"
7621 "    x1();\n"
7622 "    x2();\n"
7623 "    exit(EXIT_SUCCESS);\n"
7624 "}\n"
7625 msgstr ""
7626
7627 #. type: Plain text
7628 #: build/C/man1/sprof.1:110
7629 msgid ""
7630 "The functions I<x1()> and I<x2()> are defined in the following source file "
7631 "that is used to construct the shared library:"
7632 msgstr ""
7633
7634 #. type: Plain text
7635 #: build/C/man1/sprof.1:115
7636 #, no-wrap
7637 msgid ""
7638 "$ B<cat libdemo.c>\n"
7639 "#include E<lt>unistd.hE<gt>\n"
7640 msgstr ""
7641
7642 #. type: Plain text
7643 #: build/C/man1/sprof.1:120
7644 #, no-wrap
7645 msgid ""
7646 "void\n"
7647 "consumeCpu1(int lim)\n"
7648 "{\n"
7649 "    int j;\n"
7650 msgstr ""
7651
7652 #. type: Plain text
7653 #: build/C/man1/sprof.1:124 build/C/man1/sprof.1:141
7654 #, no-wrap
7655 msgid ""
7656 "    for (j = 0; j E<lt> lim; j++)\n"
7657 "\tgetppid();\n"
7658 "}\n"
7659 msgstr ""
7660
7661 #. type: Plain text
7662 #: build/C/man1/sprof.1:128
7663 #, no-wrap
7664 msgid ""
7665 "void\n"
7666 "x1(void) {\n"
7667 "    int j;\n"
7668 msgstr ""
7669
7670 #. type: Plain text
7671 #: build/C/man1/sprof.1:132
7672 #, no-wrap
7673 msgid ""
7674 "    for (j = 0; j E<lt> 100; j++)\n"
7675 "\tconsumeCpu1(200000);\n"
7676 "}\n"
7677 msgstr ""
7678
7679 #. type: Plain text
7680 #: build/C/man1/sprof.1:137
7681 #, no-wrap
7682 msgid ""
7683 "void\n"
7684 "consumeCpu2(int lim)\n"
7685 "{\n"
7686 "    int j;\n"
7687 msgstr ""
7688
7689 #. type: Plain text
7690 #: build/C/man1/sprof.1:146
7691 #, no-wrap
7692 msgid ""
7693 "void\n"
7694 "x2(void)\n"
7695 "{\n"
7696 "    int j;\n"
7697 msgstr ""
7698
7699 #. type: Plain text
7700 #: build/C/man1/sprof.1:150
7701 #, no-wrap
7702 msgid ""
7703 "    for (j = 0; j E<lt> 1000; j++)\n"
7704 "\tconsumeCpu2(10000);\n"
7705 "}\n"
7706 msgstr ""
7707
7708 #. type: Plain text
7709 #: build/C/man1/sprof.1:157
7710 msgid ""
7711 "Now we construct the shared library with the real name I<libdemo.so.1.0.1>, "
7712 "and the soname I<libdemo.so.1>:"
7713 msgstr ""
7714
7715 #. type: Plain text
7716 #: build/C/man1/sprof.1:162
7717 #, no-wrap
7718 msgid ""
7719 "$ B<cc -g -fPIC -shared -Wl,-soname,libdemo.so.1 \\e>\n"
7720 "        B<-o libdemo.so.1.0.1 libdemo.c>\n"
7721 msgstr ""
7722
7723 #. type: Plain text
7724 #: build/C/man1/sprof.1:167
7725 msgid ""
7726 "Then we construct symbolic links for the library soname and the library "
7727 "linker name:"
7728 msgstr ""
7729
7730 #. type: Plain text
7731 #: build/C/man1/sprof.1:172
7732 #, no-wrap
7733 msgid ""
7734 "$ B<ln -sf libdemo.so.1.0.1 libdemo.so.1>\n"
7735 "$ B<ln -sf libdemo.so.1 libdemo.so>\n"
7736 msgstr ""
7737
7738 #. type: Plain text
7739 #: build/C/man1/sprof.1:177
7740 msgid ""
7741 "Next, we compile the main program, linking it against the shared library, "
7742 "and then list the dynamic dependencies of the program:"
7743 msgstr ""
7744
7745 #. type: Plain text
7746 #: build/C/man1/sprof.1:186
7747 #, no-wrap
7748 msgid ""
7749 "$ B<cc -g -o prog prog.c -L. -ldemo>\n"
7750 "$ B<ldd prog>\n"
7751 "\tlinux-vdso.so.1 =E<gt>  (0x00007fff86d66000)\n"
7752 "\tlibdemo.so.1 =E<gt> not found\n"
7753 "\tlibc.so.6 =E<gt> /lib64/libc.so.6 (0x00007fd4dc138000)\n"
7754 "\t/lib64/ld-linux-x86-64.so.2 (0x00007fd4dc51f000)\n"
7755 msgstr ""
7756
7757 #. type: Plain text
7758 #: build/C/man1/sprof.1:193
7759 msgid ""
7760 "In order to get profiling information for the shared library, we define the "
7761 "environment variable B<LD_PROFILE> with the soname of the library:"
7762 msgstr ""
7763
7764 #. type: Plain text
7765 #: build/C/man1/sprof.1:197
7766 #, no-wrap
7767 msgid "$ B<export LD_PROFILE=libdemo.so.1>\n"
7768 msgstr ""
7769
7770 #. type: Plain text
7771 #: build/C/man1/sprof.1:204
7772 msgid ""
7773 "We then define the environment variable B<LD_PROFILE_OUTPUT> with the "
7774 "pathname of the directory where profile output should be written, and create "
7775 "that directory if it does not exist already:"
7776 msgstr ""
7777
7778 #. type: Plain text
7779 #: build/C/man1/sprof.1:209
7780 #, no-wrap
7781 msgid ""
7782 "$ B<export LD_PROFILE_OUTPUT=$(pwd)/prof_data>\n"
7783 "$ B<mkdir -p $LD_PROFILE_OUTPUT>\n"
7784 msgstr ""
7785
7786 #. type: Plain text
7787 #: build/C/man1/sprof.1:217
7788 msgid ""
7789 "B<LD_PROFILE> causes profiling output to be I<appended> to the output file "
7790 "if it already exists, so we ensure that there is no preexisting profiling "
7791 "data:"
7792 msgstr ""
7793
7794 #. type: Plain text
7795 #: build/C/man1/sprof.1:221
7796 #, no-wrap
7797 msgid "$ B<rm -f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile>\n"
7798 msgstr ""
7799
7800 #. type: Plain text
7801 #: build/C/man1/sprof.1:227
7802 msgid ""
7803 "We then run the program to produce the profiling output, which is written to "
7804 "a file in the directory specified in B<LD_PROFILE_OUTPUT>:"
7805 msgstr ""
7806
7807 #. type: Plain text
7808 #: build/C/man1/sprof.1:233
7809 #, no-wrap
7810 msgid ""
7811 "$ B<LD_LIBRARY_PATH=. ./prog>\n"
7812 "$ B<ls prof_data>\n"
7813 "libdemo.so.1.profile\n"
7814 msgstr ""
7815
7816 #. type: Plain text
7817 #: build/C/man1/sprof.1:239
7818 msgid ""
7819 "We then use the B<sprof -p> option to generate a flat profile with counts "
7820 "and ticks:"
7821 msgstr ""
7822
7823 #. type: Plain text
7824 #: build/C/man1/sprof.1:244
7825 #, no-wrap
7826 msgid ""
7827 "$ B<sprof -p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile>\n"
7828 "Flat profile:\n"
7829 msgstr ""
7830
7831 #. type: Plain text
7832 #: build/C/man1/sprof.1:252
7833 #, no-wrap
7834 msgid ""
7835 "Each sample counts as 0.01 seconds.\n"
7836 "  %   cumulative   self              self     total\n"
7837 " time   seconds   seconds    calls  us/call  us/call  name\n"
7838 " 60.00      0.06     0.06      100   600.00           consumeCpu1\n"
7839 " 40.00      0.10     0.04     1000    40.00           consumeCpu2\n"
7840 "  0.00      0.10     0.00        1     0.00           x1\n"
7841 "  0.00      0.10     0.00        1     0.00           x2\n"
7842 msgstr ""
7843
7844 #. type: Plain text
7845 #: build/C/man1/sprof.1:258
7846 msgid "The B<sprof -q> option generates a call graph:"
7847 msgstr ""
7848
7849 #. type: Plain text
7850 #: build/C/man1/sprof.1:262
7851 #, no-wrap
7852 msgid "$ B<sprof -q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile>\n"
7853 msgstr ""
7854
7855 #. type: Plain text
7856 #: build/C/man1/sprof.1:264
7857 #, no-wrap
7858 msgid "index % time    self  children    called     name\n"
7859 msgstr ""
7860
7861 #. type: Plain text
7862 #: build/C/man1/sprof.1:279
7863 #, no-wrap
7864 msgid ""
7865 "                0.00    0.00      100/100         x1 [1]\n"
7866 "[0]    100.0    0.00    0.00      100         consumeCpu1 [0]\n"
7867 "-----------------------------------------------\n"
7868 "                0.00    0.00        1/1           E<lt>UNKNOWNE<gt>\n"
7869 "[1]      0.0    0.00    0.00        1         x1 [1]\n"
7870 "                0.00    0.00      100/100         consumeCpu1 [0]\n"
7871 "-----------------------------------------------\n"
7872 "                0.00    0.00     1000/1000        x2 [3]\n"
7873 "[2]      0.0    0.00    0.00     1000         consumeCpu2 [2]\n"
7874 "-----------------------------------------------\n"
7875 "                0.00    0.00        1/1           E<lt>UNKNOWNE<gt>\n"
7876 "[3]      0.0    0.00    0.00        1         x2 [3]\n"
7877 "                0.00    0.00     1000/1000        consumeCpu2 [2]\n"
7878 "-----------------------------------------------\n"
7879 msgstr ""
7880
7881 #. type: Plain text
7882 #: build/C/man1/sprof.1:285
7883 msgid ""
7884 "Above and below, the \"E<lt>UNKNOWNE<gt>\" strings represent identifiers "
7885 "that are outside of the profiled object (in this example, these are "
7886 "instances of I<main()>)."
7887 msgstr ""
7888
7889 #. type: Plain text
7890 #: build/C/man1/sprof.1:289
7891 msgid ""
7892 "The B<sprof -c> option generates a list of call pairs and the number of "
7893 "their occurrences:"
7894 msgstr ""
7895
7896 #. type: Plain text
7897 #: build/C/man1/sprof.1:297
7898 #, no-wrap
7899 msgid ""
7900 "$ B<sprof -c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile>\n"
7901 "E<lt>UNKNOWNE<gt>                  x1                                 1\n"
7902 "x1                         consumeCpu1                      100\n"
7903 "E<lt>UNKNOWNE<gt>                  x2                                 1\n"
7904 "x2                         consumeCpu2                     1000\n"
7905 msgstr ""
7906
7907 #. type: Plain text
7908 #: build/C/man1/sprof.1:303
7909 msgid "B<gprof>(1), B<ldd>(1), B<ld.so>(8)"
7910 msgstr ""