The deprecated attribute didn't work on versions of gcc older than 6, but we now require version 7 or newer, so we don't need the macro any more. This change collapses the two uses of it in sim/aux_vector.hh, and marks the macro as deprecated by extending the message string in the underlying deprecated attribute. Change-Id: I3bc9835ba19ad9534c7725e17a3558a749a94ca5 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/48514 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br> Maintainer: Daniel Carvalho <odanrc@yahoo.com.br>
141 lines
5.1 KiB
C++
141 lines
5.1 KiB
C++
/*
|
|
* Copyright (c) 2016 Advanced Micro Devices, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* For use for simulation and test purposes only
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* 3. Neither the name of the copyright holder nor the names of its
|
|
* contributors may be used to endorse or promote products derived from this
|
|
* software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef __AUX_VECTOR_HH__
|
|
#define __AUX_VECTOR_HH__
|
|
|
|
#include "base/compiler.hh"
|
|
|
|
namespace gem5
|
|
{
|
|
|
|
namespace auxv {
|
|
|
|
template<class IntType>
|
|
class AuxVector
|
|
{
|
|
public:
|
|
AuxVector() = default;
|
|
AuxVector(IntType _type, IntType _val) : type(_type), val(_val) {}
|
|
|
|
IntType type = 0;
|
|
IntType val = 0;
|
|
};
|
|
|
|
// Ensure the global versions of swap_byte are visible.
|
|
using gem5::swap_byte;
|
|
|
|
// Define swap_byte in this namespace, so argument dependent resolution can
|
|
// find it.
|
|
template <class IntType>
|
|
inline AuxVector<IntType>
|
|
swap_byte(const AuxVector<IntType> &av)
|
|
{
|
|
return AuxVector<IntType>(swap_byte(av.type), swap_byte(av.val));
|
|
}
|
|
|
|
enum Type
|
|
{
|
|
Null = 0, // End of vector.
|
|
Ignore = 1, // Ignored.
|
|
Execfd = 2, // File descriptor of program if interpreter used.
|
|
Phdr = 3, // Address of program header tables in memory.
|
|
Phent = 4, // Size in bytes of one program header entry.
|
|
Phnum = 5, // Number of entries in program header table.
|
|
Pagesz = 6, // System page size.
|
|
Base = 7, // Base address of interpreter program in memory.
|
|
Flags = 8, // Unused.
|
|
Entry = 9, // Entry point of program after interpreter setup.
|
|
Notelf = 10, // Non-zero if format is different than ELF.
|
|
Uid = 11, // Address of real user ID of thread.
|
|
Euid = 12, // Address of effective user ID of thread.
|
|
Gid = 13, // Address of real group ID of thread.
|
|
Egid = 14, // Address of effective group ID of thread.
|
|
Platform = 15, // Platform string for the architecture.
|
|
Hwcap = 16, // Bits which describe the hardware capabilities.
|
|
Clktck = 17, // Frequency at which times() syscall increments.
|
|
Secure = 23, // Whether to enable "secure mode" in executable.
|
|
BasePlatform = 24, // Platform string (differs on PowerPC only).
|
|
Random = 25, // Pointer to 16 bytes of random data.
|
|
Hwcap2 = 26, // Extension of AT_HWCAP.
|
|
Execfn = 31, // Filename of the program.
|
|
VectorSize = 44
|
|
};
|
|
|
|
} // namespace auxv
|
|
|
|
#define GEM5_DEPRECATE_AT(NAME, name) M5_AT_##NAME \
|
|
[[deprecated("Replace M5_AT_" #NAME " with gem5::auxv::" #name)]] = \
|
|
gem5::auxv::name
|
|
|
|
enum AuxiliaryVectorType
|
|
{
|
|
GEM5_DEPRECATE_AT(NULL, Null),
|
|
GEM5_DEPRECATE_AT(IGNORE, Ignore),
|
|
GEM5_DEPRECATE_AT(EXECFD, Execfd),
|
|
GEM5_DEPRECATE_AT(PHDR, Phdr),
|
|
GEM5_DEPRECATE_AT(PHENT, Phent),
|
|
GEM5_DEPRECATE_AT(PHNUM, Phnum),
|
|
GEM5_DEPRECATE_AT(PAGESZ, Pagesz),
|
|
GEM5_DEPRECATE_AT(BASE, Base),
|
|
GEM5_DEPRECATE_AT(FLAGS, Flags),
|
|
GEM5_DEPRECATE_AT(ENTRY, Entry),
|
|
GEM5_DEPRECATE_AT(NOTELF, Notelf),
|
|
GEM5_DEPRECATE_AT(UID, Uid),
|
|
GEM5_DEPRECATE_AT(EUID, Euid),
|
|
GEM5_DEPRECATE_AT(GID, Gid),
|
|
GEM5_DEPRECATE_AT(EGID, Egid),
|
|
GEM5_DEPRECATE_AT(PLATFORM, Platform),
|
|
GEM5_DEPRECATE_AT(HWCAP, Hwcap),
|
|
GEM5_DEPRECATE_AT(CLKTCK, Clktck),
|
|
GEM5_DEPRECATE_AT(SECURE, Secure),
|
|
M5_BASE_PLATFORM [[deprecated(
|
|
"Replace M5_BASE_PLATFORM with gem5::auxv::BasePlatform")]] =
|
|
gem5::auxv::BasePlatform,
|
|
GEM5_DEPRECATE_AT(RANDOM, Random),
|
|
GEM5_DEPRECATE_AT(HWCAP2, Hwcap2),
|
|
GEM5_DEPRECATE_AT(EXECFN, Execfn),
|
|
GEM5_DEPRECATE_AT(VECTOR_SIZE, VectorSize)
|
|
};
|
|
|
|
#undef GEM5_DEPRECATE_AT
|
|
|
|
template <class IntType>
|
|
using AuxVector [[deprecated(
|
|
"The AuxVector template is now in the gem5::auxv namespace.")]] =
|
|
gem5::auxv::AuxVector<IntType>;
|
|
|
|
} // namespace gem5
|
|
|
|
#endif // __AUX_VECTOR_HH__
|