From owner-freebsd-hackers Sun May 19 22:32:12 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from evilpete.dyndns.org (12-232-26-46.client.attbi.com [12.232.26.46]) by hub.freebsd.org (Postfix) with ESMTP id A070137B410; Sun, 19 May 2002 22:32:04 -0700 (PDT) Received: from overcee.wemm.org ([10.0.0.3]) by evilpete.dyndns.org (8.11.6/8.11.6) with ESMTP id g4K5W0122704; Sun, 19 May 2002 22:32:04 -0700 (PDT) (envelope-from peter@wemm.org) Received: from wemm.org (localhost [127.0.0.1]) by overcee.wemm.org (Postfix) with ESMTP id 5B2FD39FC; Sun, 19 May 2002 22:31:55 -0700 (PDT) (envelope-from peter@wemm.org) X-Mailer: exmh version 2.5 07/13/2001 with nmh-1.0.4 To: Jonathan Mini Cc: "E.B. Dreger" , freebsd-hackers@FreeBSD.ORG Subject: Re: any file --> symbol in .o file In-Reply-To: <20020519214105.K25907@stylus.haikugeek.com> Date: Sun, 19 May 2002 22:31:55 -0700 From: Peter Wemm Message-Id: <20020520053155.5B2FD39FC@overcee.wemm.org> Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG 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 > > 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 , 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 > 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