Knowledge (XXG)

Binary File Descriptor library

Source 📝

379: 174: 25: 319:
user, the user would still be able to use the interface. This hiding of the detail is done with the help of the back-end. The back-end implements how the front-end interface interacts with the object files layout. Whenever a new object files type is introduced the back-end needs to register the type and implement it if it needs to be supported by the BFD application.
412:
Gumby began designing the library and discussing the design with Stallman. Stallman said that the job was too difficult—it would require a complete rewrite of all the tools, and it would be too difficult to maintain. Gumby told him it wasn't such a "Big F*cking Deal" and hence named this new
318:
BFD library can be logically divided into two parts. The front-end and the back-end. The front-end gives a common interface independent of underlying object file view. Users will be interacting with the object files with this interface. Even if the layout of the object files are not known to the
322:
Although BFD was originally designed to be a generic library usable by a wide variety of tools, the frequent need to tinker with the API to accommodate new systems' capabilities has tended to limit its use; BFD's main clients are the
275:
BFD works by presenting a common abstract view of object files. An object file has a "header" with descriptive info; a variable number of "sections" that each has a name, some attributes, and a block of data; a
263:
said that it would be difficult; David's response was that it wasn't such a "Big Fucking Deal". Abbreviated to "BFD", this became the library name. "Binary File Descriptor" was invented later as a
339:(GDB). As a result, BFD is not distributed separately, but is always included with releases of binutils and GDB. Nevertheless, BFD is a critical component in the use of GNU tools for 35: 929: 955: 773: 599: 361:#include "bfd.h" #include <stdio.h> int main() { bfd* abfd = bfd_openr("a.o",NULL); printf("%llu\n", bfd_get_size(abfd)); return 0; } 592: 49:
of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to be
101: 647: 384: 73: 80: 637: 632: 587: 120: 965: 960: 87: 46: 582: 642: 287:
Internally, BFD translates the data from the abstract view into the details of the bit/byte layout required by the target
69: 970: 549: 281: 42: 917: 240: 151: 58: 522: 615: 211: 413:
creation the BFD library. (We explained to our customers that BFD stood for the binary file descriptor library.)
763: 577: 187: 708: 463: 288: 94: 876: 768: 252: 891: 620: 424: 54: 843: 332: 232: 50: 934: 778: 199: 194: 866: 698: 693: 625: 259:
proposed developing the library as a way to open up new business opportunities for the company,
886: 793: 688: 542: 489: 160: 437: 901: 833: 260: 256: 206: 144: 400: 871: 861: 738: 340: 173: 881: 783: 312: 239:
in a variety of formats. As of 2003, it supports approximately 50 file formats and 25
949: 923: 703: 572: 324: 296: 896: 718: 713: 667: 535: 336: 277: 748: 678: 558: 236: 228: 808: 802: 753: 374: 328: 300: 292: 139: 828: 758: 743: 347: 264: 838: 818: 798: 723: 673: 728: 823: 813: 788: 308: 304: 683: 517: 346:
The BFD library can be used to read the structured data out of a
41:
Please help to demonstrate the notability of the topic by citing
733: 531: 663: 527: 18: 490:"Re: FreeBSD 4.6 - binutils 2.14 installs useless libbfd" 401:"Open Sources: Voices from the Open Source Revolution" 367:
gcc main.c -lbfd -o output ./output # prints the size
910: 854: 656: 608: 565: 358:Eg: Print object file size using bfd library apis. 291:and file format. Its key services include handling 205: 193: 183: 150: 138: 438:"Re: depending on shared libbfd from binutils-dev" 518:Binutils page, with access to current BFD sources 16:GNU support for multiple executable file formats 930:Free Software Foundation anti-Windows campaigns 36:notability guidelines for products and services 543: 8: 315:arithmetic specified by relocation entries. 133: 550: 536: 528: 523:objdump implementation, uses many BFD apis 172: 132: 121:Learn how and when to remove this message 392: 7: 648:GNAT Modified General Public License 385:Free and open-source software portal 303:target, correct conversion between 956:C (programming language) libraries 14: 638:GNU Affero General Public License 633:GNU Lesser General Public License 377: 70:"Binary File Descriptor library" 23: 462:Kuratomi, Toshio (2010-06-04). 295:differences, such as between a 34:may not meet Knowledge (XXG)'s 643:GNU Free Documentation License 436:Langasek, Steve (2005-05-22). 221:Binary File Descriptor library 134:Binary File Descriptor library 1: 241:instruction set architectures 918:GNU/Linux naming controversy 335:("binutils") tools, and the 987: 616:GNU General Public License 488:Taylor, Ian (2003-09-12). 231:'s main mechanism for the 212:GNU General Public License 43:reliable secondary sources 32:The topic of this article 169:.git%3Ba%3Dtree%3Bf%3Dbfd 600:History of free software 578:Free Software Foundation 403:. O'Reilly. January 1999 966:Free computer libraries 961:Executable file formats 284:entries; and so forth. 311:data, and details of 971:GNU Project software 464:"binutils once more" 333:GNU Binary Utilities 253:David Henkel-Wallace 935:Defective by Design 902:Richard M. Stallman 135: 867:Benjamin Mako Hill 140:Original author(s) 38: 943: 942: 887:Georg C. F. Greve 794:GNU Privacy Guard 621:linking exception 425:BFD specification 354:BFD Library Usage 331:(GLD), and other 217: 216: 131: 130: 123: 105: 33: 978: 552: 545: 538: 529: 505: 504: 502: 501: 485: 479: 478: 476: 475: 468:Fedora-packaging 459: 453: 452: 450: 449: 433: 427: 422: 416: 415: 409: 408: 397: 387: 382: 381: 380: 341:embedded systems 261:Richard Stallman 235:manipulation of 176: 171: 168: 167:/?p=binutils-gdb 166: 164: 162: 145:Cygnus Solutions 136: 126: 119: 115: 112: 106: 104: 63: 27: 26: 19: 986: 985: 981: 980: 979: 977: 976: 975: 946: 945: 944: 939: 906: 872:Bradley M. Kuhn 862:Alexandre Oliva 850: 652: 604: 561: 556: 514: 509: 508: 499: 497: 487: 486: 482: 473: 471: 461: 460: 456: 447: 445: 435: 434: 430: 423: 419: 406: 404: 399: 398: 394: 383: 378: 376: 373: 368: 364:Build command: 362: 356: 273: 249: 179: 159: 127: 116: 110: 107: 64: 62: 40: 28: 24: 17: 12: 11: 5: 984: 982: 974: 973: 968: 963: 958: 948: 947: 941: 940: 938: 937: 932: 927: 920: 914: 912: 908: 907: 905: 904: 899: 894: 889: 884: 882:Federico Heinz 879: 874: 869: 864: 858: 856: 852: 851: 849: 848: 841: 836: 831: 826: 821: 816: 811: 806: 796: 791: 786: 784:GNU Archimedes 781: 776: 771: 766: 761: 756: 751: 746: 741: 736: 731: 726: 721: 716: 711: 706: 701: 696: 691: 686: 681: 676: 671: 660: 658: 654: 653: 651: 650: 645: 640: 635: 630: 629: 628: 626:font exception 623: 612: 610: 606: 605: 603: 602: 597: 596: 595: 590: 585: 575: 569: 567: 563: 562: 557: 555: 554: 547: 540: 532: 526: 525: 520: 513: 512:External links 510: 507: 506: 496:(Mailing list) 480: 470:(Mailing list) 454: 444:(Mailing list) 428: 417: 391: 390: 389: 388: 372: 369: 366: 360: 355: 352: 272: 269: 257:Cygnus Support 248: 245: 215: 214: 209: 203: 202: 197: 191: 190: 185: 181: 180: 178: 177: 156: 154: 148: 147: 142: 129: 128: 31: 29: 22: 15: 13: 10: 9: 6: 4: 3: 2: 983: 972: 969: 967: 964: 962: 959: 957: 954: 953: 951: 936: 933: 931: 928: 926: 925: 924:Revolution OS 921: 919: 916: 915: 913: 909: 903: 900: 898: 895: 893: 892:John Sullivan 890: 888: 885: 883: 880: 878: 875: 873: 870: 868: 865: 863: 860: 859: 857: 853: 847: 846: 842: 840: 837: 835: 832: 830: 827: 825: 822: 820: 817: 815: 812: 810: 807: 804: 800: 797: 795: 792: 790: 787: 785: 782: 780: 777: 775: 772: 770: 767: 765: 762: 760: 757: 755: 752: 750: 747: 745: 742: 740: 737: 735: 732: 730: 727: 725: 722: 720: 717: 715: 712: 710: 707: 705: 702: 700: 697: 695: 692: 690: 687: 685: 682: 680: 677: 675: 672: 669: 665: 662: 661: 659: 655: 649: 646: 644: 641: 639: 636: 634: 631: 627: 624: 622: 619: 618: 617: 614: 613: 611: 607: 601: 598: 594: 593:Latin America 591: 589: 586: 584: 581: 580: 579: 576: 574: 573:GNU Manifesto 571: 570: 568: 564: 560: 553: 548: 546: 541: 539: 534: 533: 530: 524: 521: 519: 516: 515: 511: 495: 491: 484: 481: 469: 465: 458: 455: 443: 439: 432: 429: 426: 421: 418: 414: 402: 396: 393: 386: 375: 370: 365: 359: 353: 351: 349: 344: 343:development. 342: 338: 334: 330: 326: 325:GNU Assembler 320: 316: 314: 310: 306: 302: 298: 297:little-endian 294: 290: 285: 283: 279: 270: 268: 266: 262: 258: 254: 246: 244: 242: 238: 234: 230: 226: 222: 213: 210: 208: 204: 201: 198: 196: 192: 189: 186: 182: 175: 170: 158: 157: 155: 153: 149: 146: 143: 141: 137: 125: 122: 114: 103: 100: 96: 93: 89: 86: 82: 79: 75: 72: –  71: 67: 66:Find sources: 60: 56: 52: 48: 44: 37: 30: 21: 20: 922: 911:Other topics 897:Nagarjuna G. 855:Contributors 844: 819:GNU LilyPond 779:GNU Electric 704:Build system 498:. Retrieved 493: 483: 472:. Retrieved 467: 457: 446:. Retrieved 442:debian-devel 441: 431: 420: 411: 405:. Retrieved 395: 363: 357: 345: 337:GNU Debugger 321: 317: 286: 278:symbol table 274: 250: 237:object files 224: 220: 218: 117: 108: 98: 91: 84: 77: 65: 749:GNU TeXmacs 679:Linux-libre 559:GNU Project 267:for "BFD". 229:GNU Project 47:independent 950:Categories 809:GNU Health 754:GNU Octave 500:2011-04-03 474:2011-04-03 448:2011-04-03 407:2011-11-11 371:References 329:GNU Linker 301:big-endian 293:byte order 282:relocation 184:Written in 161:sourceware 152:Repository 81:newspapers 55:redirected 877:Brian Fox 829:GNU Chess 759:GNU Taler 744:GNU Emacs 699:findutils 694:coreutils 348:core dump 299:host and 289:processor 265:backronym 227:) is the 111:July 2011 45:that are 799:Gnuzilla 714:binutils 668:variants 657:Software 609:Licenses 494:binutils 233:portable 845:more... 729:GNUstep 566:History 327:(GAS), 313:address 247:History 207:License 200:Library 95:scholar 59:deleted 824:GNU Go 814:GNUmed 803:IceCat 789:GNUnet 583:Europe 309:64-bit 305:32-bit 271:Design 97:  90:  83:  76:  68:  51:merged 834:Gnash 764:GNU R 684:glibc 588:India 251:When 102:JSTOR 88:books 57:, or 839:Guix 739:Jami 734:GIMP 724:GRUB 689:Bash 674:Hurd 307:and 219:The 195:Type 165:/git 163:.org 74:news 774:GMP 769:GSL 719:GDB 709:GCC 664:GNU 255:of 225:BFD 952:: 492:. 466:. 440:. 410:. 350:. 280:; 243:. 53:, 805:) 801:( 670:) 666:( 551:e 544:t 537:v 503:. 477:. 451:. 223:( 188:C 124:) 118:( 113:) 109:( 99:· 92:· 85:· 78:· 61:. 39:.

Index

notability guidelines for products and services
reliable secondary sources
independent
merged
redirected
deleted
"Binary File Descriptor library"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Original author(s)
Cygnus Solutions
Repository
sourceware.org/git/?p=binutils-gdb.git%3Ba%3Dtree%3Bf%3Dbfd
Edit this at Wikidata
C
Type
Library
License
GNU General Public License
GNU Project
portable
object files
instruction set architectures
David Henkel-Wallace
Cygnus Support
Richard Stallman

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.