Date: Sun, 19 May 2002 22:31:55 -0700 From: Peter Wemm <peter@wemm.org> To: Jonathan Mini <mini@FreeBSD.ORG> Cc: "E.B. Dreger" <eddy+public+spam@noc.everquick.net>, freebsd-hackers@FreeBSD.ORG Subject: Re: any file --> symbol in .o file Message-ID: <20020520053155.5B2FD39FC@overcee.wemm.org> In-Reply-To: <20020519214105.K25907@stylus.haikugeek.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Jonathan Mini wrote: > Take a look at file2c. You'll need to run the source through the compiler > first, but that is easy to do with make. You probably also want to look at objcopy. You can skip the compile step if you're prepared to use a bit of linker magic: peter@overcee[10:28pm]/tmp-192> cat p.c extern char __start_buf[]; /* magic */ extern char __stop_buf[]; /* more magic */ main() { printf("%.100s\n", __start_buf); } peter@overcee[10:28pm]/tmp-193> cc -c p.c peter@overcee[10:28pm]/tmp-194> objcopy --add-section buf=/etc/termcap \ --set-section-flags buf=load,alloc p.o p2.o peter@overcee[10:28pm]/tmp-195> cc -o p2 p2.o peter@overcee[10:29pm]/tmp-196> ./p2 # Copyright (c) 1980, 1985, 1989, 1993 # The Regents of the University of California. All rights re The trick is that __start_[sectionname] and __stop_[sectionname] are magic. The other trick is that you have to set the flags to load,alloc or you will be somewhat disappointed. Bear in mind that the sections are verbatim, ie: not null terminated. You would have to do address arithmetic on the delimiter symbols to get the size. > E.B. Dreger [eddy+public+spam@noc.everquick.net] wrote : > > > Greetings all, > > > > > > While writing CGIs in C, I'm getting a bit sick of escaping > > quotes and line continuations in strings. Not a huge deal, > > perhaps, but there must be a better way. Strings end up in .data > > or .rodata in object files to be linked... > > > > I'm about to whip up a utility that will take any arbitrary > > file and store the contents in a .o file (complete with symbol > > names so one can actually link, of course). > > > > Instead of compiling: > > > > const char foo[] = "\"Escape\" chars make strings in 'C' > > code...\n\ > > ...messy. Line breaks can be troublesome and add\ > > unexpected whitespace to one's code." ; > > > > simply put the desired unescaped text in a file: > > > > "Escape" chars make strings in 'C' code... > > ...messy. Line breaks can be troublesome and add > > unexpected whitespace to one's code. > > > > then run the utility. > > > > Large amounts of embedded HTML/XML/XHTML are just beginning to > > bug me. > > > > Note that it wouldn't be limited to text, either. If one wished > > to take a raw-binary lookup table for a sine wave, that would > > make no difference. > > > > If there's interest, I'll post it for download. I also have a > > few other ideas, and certainly am open to suggestions. > > > > > > -- > > Eddy > > > > Brotsman & Dreger, Inc. - EverQuick Internet Division > > Phone: +1 (316) 794-8922 Wichita/(Inter)national > > Phone: +1 (785) 865-5885 Lawrence > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Date: Mon, 21 May 2001 11:23:58 +0000 (GMT) > > From: A Trap <blacklist@brics.com> > > To: blacklist@brics.com > > Subject: Please ignore this portion of my mail signature. > > > > These last few lines are a trap for address-harvesting spambots. > > Do NOT send mail to <blacklist@brics.com>, or you are likely to > > be blocked. > > > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > > with "unsubscribe freebsd-hackers" in the body of the message > > -- > Jonathan Mini <mini@freebsd.org> > http://www.haikugeek.com > > "He who is not aware of his ignorance will be only misled by his knowledge." > -- Richard Whatley > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message > Cheers, -Peter -- Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com "All of this is for nothing if we don't go to the stars" - JMS/B5 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020520053155.5B2FD39FC>