| Deutsch English Français Italiano |
|
<v7fsel$3f59s$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Lawrence D'Oliveiro <ldo@nz.invalid>
Newsgroups: comp.os.vms
Subject: Re: Bliss
Date: Sat, 20 Jul 2024 08:28:06 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 53
Message-ID: <v7fsel$3f59s$1@dont-email.me>
References: <v6r3od$30fgj$2@dont-email.me> <v6r7ev$312bs$1@dont-email.me>
<v6raga$31ano$2@dont-email.me> <v6rfb3$31ano$6@dont-email.me>
<v6sj58$38thk$1@dont-email.me> <v6srvb$3dvs2$1@dont-email.me>
<v6stoc$3e8kc$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 20 Jul 2024 10:28:06 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="49c512e02f3e0737b4cb6e11ff77c5b6";
logging-data="3642684"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19rWAGYnWBwyTBwQTUvY0qB"
User-Agent: Pan/0.158 (Avdiivka; )
Cancel-Lock: sha1:4kMqiYQX+qU6vn/UPB8qZ1kjVRU=
Bytes: 2998
On Sat, 13 Jul 2024 03:53:48 -0000 (UTC), I wrote:
> That “MAIN =” elicited no complaints, but neither did it seem to do
> anything useful.
The routine referenced by the “MAIN =” directive is checked for
validity in lib/frontend/declarations.c:
text = modsym_main(np);
if (text != 0) {
scopectx_t blkscope = expr_blk_scope(blkexp);
name_t *mainrtn = 0;
if (blkscope != 0) {
mainrtn = rtnsym_search(blkscope, text);
if (mainrtn != 0) {
if (rtnsym_expr(mainrtn) == 0) {
expr_signal(ctx, STC__MNTYPERR, text);
}
}
}
if (mainrtn == 0) {
expr_signal(ctx, STC__NOMAIN, text);
}
string_free(expr_strctx(ctx), text);
}
but in lib/llvmgen/llvm_gencode.c, where it would be used to set the
start address in the generated code, that part is disabled:
#if 0 // XXX later
headerlen = 0;
str = modsym_ident(modnp);
if (str != 0) {
int reslen, len = str->len;
reslen = snprintf(module_header+headerlen, sizeof(module_header)-headerlen,
"\t.ident %-*.*s", len, len, str->ptr);
if (reslen > 0) headerlen += reslen;
}
str = modsym_main(modnp);
if (str != 0) {
int reslen, len = str->len;
if (headerlen > 0) module_header[headerlen++] = '\n';
reslen = snprintf(module_header+headerlen, sizeof(module_header)-headerlen,
"\t.set start,_%-*.*s", len, len, str->ptr);
if (reslen > 0) headerlen += reslen;
}
if (headerlen > 0) {
module_header[headerlen] = '\0';
LLVMSetModuleInlineAsm(gctx->module, module_header);
}
#endif // XXX later
I wonder if that code actually works?