From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x134.google.com (mail-il1-x134.google.com [IPv6:2607:f8b0:4864:20::134]) by sourceware.org (Postfix) with ESMTPS id 6261B385B805 for ; Sun, 2 May 2021 22:46:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 6261B385B805 Received: by mail-il1-x134.google.com with SMTP id p15so2541334iln.3 for ; Sun, 02 May 2021 15:46:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=87iZEcS+a5SSv1KXyIBx7L28BZqwVByAvWo4e51zcUo=; b=FVQBMMDRtWoT1GtccBt0z2ndP+8K8lEfQ55XLrPRY9hXGnnnPWawGXYHwJQctExUMj 2ATe5la+wDZ71TpTEEJBhzAmlAAR505S1pndLLpdvQDy+JYisAJeM0eIrnZVsI5o/SM1 nEvLVttmXagk1ywopt400AsunBtyhuQKyCodALoSvBouO0JNVcU4uoIFpfJdT+m4CW1z vvgm0ZbLyuKdnpoHJI+yh3Et3V9VZHytgfuRESP9VpQFGJ+wwfBzjEpEgtQgCc/Hk42D N5uVntbJ0EswLVEUM6VYdWSfoQ+69D6/WjzBoiqMha8H9mGwM1Su5Ut9YGoKbY9mP1k/ SriA== X-Gm-Message-State: AOAM532woESl+mZodjhfeH4OogUMsbupSltXqtGE7Z4PDXzsLjkMDkDS K4im0MVwnezvtIQCdUY6ZbfC/PVVcP6Ic3oppk/93LpX X-Google-Smtp-Source: ABdhPJzGKFkAhVQw+7EsBhCh+z9TbQAKiuFs4jngc7HyR7WMwA+kvtAowxE1qMc359ikRQbsDlNYlAzgrPip654NDmg= X-Received: by 2002:a05:6e02:1002:: with SMTP id n2mr3400251ilj.260.1619995581685; Sun, 02 May 2021 15:46:21 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:6602:2c4c:0:0:0:0 with HTTP; Sun, 2 May 2021 15:46:21 -0700 (PDT) In-Reply-To: References: From: Peng Yu Date: Sun, 2 May 2021 17:46:21 -0500 Message-ID: Subject: Re: minimal loader program in C To: libc-help Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-help@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-help mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 May 2021 22:46:23 -0000 Maybe I can just compile /lib64/ld-linux-x86-64.so.2 to learn only the source code relevant to loader. Is there a way to just compile this file? On 4/29/21, Peng Yu wrote: > I see the following system calls are used when a program is run. I'd > like to understand how this process is done in detail. Is there a > minimal loader C program that just covers the basics of loading this > simple program? > > $ cat main.c > int main() { return 0; } > $ gcc main.c > $ strace ./a.out > execve("./a.out", ["./a.out"], 0x7ffe586d5e60 /* 50 vars */) = 0 > brk(NULL) = 0x562f27c1c000 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=116056, ...}) = 0 > mmap(NULL, 116056, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f71ab750000 > close(3) = 0 > openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 > read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@n\2\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1839792, ...}) = 0 > mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x7f71ab74e000 > mmap(NULL, 1852680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = > 0x7f71ab589000 > mprotect(0x7f71ab5ae000, 1662976, PROT_NONE) = 0 > mmap(0x7f71ab5ae000, 1355776, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7f71ab5ae000 > mmap(0x7f71ab6f9000, 303104, PROT_READ, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x170000) = 0x7f71ab6f9000 > mmap(0x7f71ab744000, 24576, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ba000) = 0x7f71ab744000 > mmap(0x7f71ab74a000, 13576, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f71ab74a000 > close(3) = 0 > arch_prctl(ARCH_SET_FS, 0x7f71ab74f540) = 0 > mprotect(0x7f71ab744000, 12288, PROT_READ) = 0 > mprotect(0x562f2789d000, 4096, PROT_READ) = 0 > mprotect(0x7f71ab797000, 4096, PROT_READ) = 0 > munmap(0x7f71ab750000, 116056) = 0 > exit_group(0) = ? > +++ exited with 0 +++ > > -- > Regards, > Peng > -- Regards, Peng