OLD | NEW |
1 /* Simulator for Analog Devices Blackfin processors. | 1 /* Simulator for Analog Devices Blackfin processors. |
2 | 2 |
3 Copyright (C) 2005-2012 Free Software Foundation, Inc. | 3 Copyright (C) 2005-2012 Free Software Foundation, Inc. |
4 Contributed by Analog Devices, Inc. | 4 Contributed by Analog Devices, Inc. |
5 | 5 |
6 This file is part of simulators. | 6 This file is part of simulators. |
7 | 7 |
8 This program is free software; you can redistribute it and/or modify | 8 This program is free software; you can redistribute it and/or modify |
9 it under the terms of the GNU General Public License as published by | 9 it under the terms of the GNU General Public License as published by |
10 the Free Software Foundation; either version 3 of the License, or | 10 the Free Software Foundation; either version 3 of the License, or |
(...skipping 1033 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1044 env[0..N][0..M] | 1044 env[0..N][0..M] |
1045 FDPIC loadmaps -- for FDPIC apps | 1045 FDPIC loadmaps -- for FDPIC apps |
1046 So set things up the same way. */ | 1046 So set things up the same way. */ |
1047 int i, argc, envc; | 1047 int i, argc, envc; |
1048 bu32 argv_flat, env_flat; | 1048 bu32 argv_flat, env_flat; |
1049 | 1049 |
1050 bu32 sp, sp_flat; | 1050 bu32 sp, sp_flat; |
1051 | 1051 |
1052 /* start, at_phdr, at_phnum, at_base, at_entry, pt_dynamic */ | 1052 /* start, at_phdr, at_phnum, at_base, at_entry, pt_dynamic */ |
1053 bu32 elf_addrs[6]; | 1053 bu32 elf_addrs[6]; |
1054 bu32 auxvt, auxvt_size; | 1054 bu32 auxvt; |
1055 bu32 exec_loadmap, ldso_loadmap; | 1055 bu32 exec_loadmap, ldso_loadmap; |
1056 char *ldso_path; | 1056 char *ldso_path; |
1057 | 1057 |
1058 unsigned char null[4] = { 0, 0, 0, 0 }; | 1058 unsigned char null[4] = { 0, 0, 0, 0 }; |
1059 | 1059 |
1060 host_callback *cb = STATE_CALLBACK (sd); | 1060 host_callback *cb = STATE_CALLBACK (sd); |
1061 | 1061 |
1062 elf_addrs[0] = elf_addrs[4] = bfd_get_start_address (abfd); | 1062 elf_addrs[0] = elf_addrs[4] = bfd_get_start_address (abfd); |
1063 elf_addrs[1] = elf_addrs[2] = elf_addrs[3] = elf_addrs[5] = 0; | 1063 elf_addrs[1] = elf_addrs[2] = elf_addrs[3] = elf_addrs[5] = 0; |
1064 | 1064 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1137 if (auxvt) | 1137 if (auxvt) |
1138 { | 1138 { |
1139 # define AT_PUSH(at, val) \ | 1139 # define AT_PUSH(at, val) \ |
1140 auxvt_size += 8; \ | 1140 auxvt_size += 8; \ |
1141 sp -= 4; \ | 1141 sp -= 4; \ |
1142 auxvt = (val); \ | 1142 auxvt = (val); \ |
1143 sim_write (sd, sp, (void *)&auxvt, 4); \ | 1143 sim_write (sd, sp, (void *)&auxvt, 4); \ |
1144 sp -= 4; \ | 1144 sp -= 4; \ |
1145 auxvt = (at); \ | 1145 auxvt = (at); \ |
1146 sim_write (sd, sp, (void *)&auxvt, 4) | 1146 sim_write (sd, sp, (void *)&auxvt, 4) |
1147 auxvt_size = 0; | |
1148 unsigned int egid = getegid (), gid = getgid (); | 1147 unsigned int egid = getegid (), gid = getgid (); |
1149 unsigned int euid = geteuid (), uid = getuid (); | 1148 unsigned int euid = geteuid (), uid = getuid (); |
| 1149 bu32 auxvt_size = 0; |
1150 AT_PUSH (AT_NULL, 0); | 1150 AT_PUSH (AT_NULL, 0); |
1151 AT_PUSH (AT_SECURE, egid != gid || euid != uid); | 1151 AT_PUSH (AT_SECURE, egid != gid || euid != uid); |
1152 AT_PUSH (AT_EGID, egid); | 1152 AT_PUSH (AT_EGID, egid); |
1153 AT_PUSH (AT_GID, gid); | 1153 AT_PUSH (AT_GID, gid); |
1154 AT_PUSH (AT_EUID, euid); | 1154 AT_PUSH (AT_EUID, euid); |
1155 AT_PUSH (AT_UID, uid); | 1155 AT_PUSH (AT_UID, uid); |
1156 AT_PUSH (AT_ENTRY, elf_addrs[4]); | 1156 AT_PUSH (AT_ENTRY, elf_addrs[4]); |
1157 AT_PUSH (AT_FLAGS, 0); | 1157 AT_PUSH (AT_FLAGS, 0); |
1158 AT_PUSH (AT_BASE, elf_addrs[3]); | 1158 AT_PUSH (AT_BASE, elf_addrs[3]); |
1159 AT_PUSH (AT_PHNUM, elf_addrs[2]); | 1159 AT_PUSH (AT_PHNUM, elf_addrs[2]); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1272 case OPERATING_ENVIRONMENT: | 1272 case OPERATING_ENVIRONMENT: |
1273 bfin_os_init (sd, cpu, (void *)argv); | 1273 bfin_os_init (sd, cpu, (void *)argv); |
1274 break; | 1274 break; |
1275 default: | 1275 default: |
1276 bfin_virtual_init (sd, cpu); | 1276 bfin_virtual_init (sd, cpu); |
1277 break; | 1277 break; |
1278 } | 1278 } |
1279 | 1279 |
1280 return SIM_RC_OK; | 1280 return SIM_RC_OK; |
1281 } | 1281 } |
OLD | NEW |