1 // copy_test_v1.cc -- test copy relocs for gold 2 3 // Copyright (C) 2008-2016 Free Software Foundation, Inc. 4 // Written by Ian Lance Taylor <iant (at) google.com>. 5 6 // This file is part of gold. 7 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 10 // the Free Software Foundation; either version 3 of the License, or 11 // (at your option) any later version. 12 13 // This program is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 // GNU General Public License for more details. 17 18 // You should have received a copy of the GNU General Public License 19 // along with this program; if not, write to the Free Software 20 // Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 21 // MA 02110-1301, USA. 22 23 // This source file is used for testing the --incremental option. 24 // The object built from this source will be incrementally updated 25 // with the correct object built from copy_test.cc. 26 27 #include <cassert> 28 #include <stdint.h> 29 30 // Misalign the BSS section. 31 static char c; 32 33 // From copy_test_1.cc. 34 extern char b; 35 36 // From copy_test_2.cc. 37 extern long long l; 38 extern int ip; // protected visibility; may not be copied 39 40 int* ipp = &ip; 41 42 int 43 main() 44 { 45 assert(c == 0); 46 assert(b == 1); 47 assert(l == 3); // Deliberately incorrect. 48 assert((reinterpret_cast<uintptr_t>(&l) & 0x7) == 0); 49 assert(*ipp == 3); 50 return 0; 51 } 52