aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt26
-rw-r--r--README.md8
-rw-r--r--src/wallet/wallet2.cpp12
-rw-r--r--utils/gpg_keys/moneromooo.asc50
4 files changed, 63 insertions, 33 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2761b32f7..9f15c73dc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -330,6 +330,7 @@ if(MSVC)
endif()
include_directories(SYSTEM src/platform/msc)
else()
+ include(TestCXXAcceptsFlag)
set(ARCH native CACHE STRING "CPU to build for: -march value or 'default' to not pass -march at all")
message(STATUS "Building on ${CMAKE_SYSTEM_PROCESSOR} for ${ARCH}")
if(ARCH STREQUAL "default")
@@ -391,15 +392,32 @@ else()
message(STATUS "AES support enabled")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes")
- elseif(ARM) #NB ARMv8 DOES support AES, but not yet coded
- message(STATUS "AES support disabled (not available on ARM)")
+ elseif(ARM6)
+ message(STATUS "AES support not available on ARMv6")
+ elseif(ARM7)
+ message(STATUS "AES support not available on ARMv7")
+ elseif(ARM8)
+ CHECK_CXX_ACCEPTS_FLAG("-march=${ARCH}+crypto" ARCH_PLUS_CRYPTO)
+ if(ARCH_PLUS_CRYPTO)
+ message(STATUS "Crypto extensions enabled for ARMv8")
+ set(ARCH_FLAG "-march=${ARCH}+crypto")
+ else()
+ message(STATUS "Crypto extensions unavailable on your ARMv8 device")
+ endif()
else()
message(STATUS "AES support disabled")
endif()
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${ARCH_FLAG} ${COVERAGE_FLAGS}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D_GNU_SOURCE ${MINGW_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${ARCH_FLAG} ${COVERAGE_FLAGS}")
+
+ # With GCC 6.1.1 the compiled binary malfunctions due to aliasing. Until that
+ # is fixed in the code (Issue #847), force compiler to be conservative.
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
+
if(ARM)
message(STATUS "Setting FPU Flags for ARM Processors")
- include(TestCXXAcceptsFlag)
#NB NEON hardware does not fully implement the IEEE 754 standard for floating-point arithmetic
#Need custom assembly code to take full advantage of NEON SIMD
@@ -407,7 +425,7 @@ else()
#Cortex-A5/9 -mfpu=neon-fp16
#Cortex-A7/15 -mfpu=neon-vfpv4
#Cortex-A8 -mfpu=neon
- #ARMv8 -FP and SIMD on by default for all ARM8v-a series, NO -mfpu setting needed
+ #ARMv8 -FP and SIMD on by default for all ARM8v-A series, NO -mfpu setting needed
#For custom -mtune, processor IDs for ARMv8-A series:
#0xd04 - Cortex-A35
diff --git a/README.md b/README.md
index e0fb346ec..5c66289ae 100644
--- a/README.md
+++ b/README.md
@@ -272,7 +272,11 @@ See README.i18n
## Using Tor
-While Monero isn't made to integrate with Tor, it can be used wrapped with torsocks, if you add --p2p-bind-ip 127.0.0.1 to the monerod command line. You also want to set DNS requests to go over TCP, so they'll be routed through Tor, by setting DNS_PUBLIC=tcp. You may also disable IGD (UPnP port forwarding negotiation), which is pointless with Tor. To allow local connections from the wallet, add TORSOCKS_ALLOW_INBOUND=1. Example:
+While Monero isn't made to integrate with Tor, it can be used wrapped with torsocks, if you add --p2p-bind-ip 127.0.0.1 to the monerod command line. You also want to set DNS requests to go over TCP, so they'll be routed through Tor, by setting DNS_PUBLIC=tcp. You may also disable IGD (UPnP port forwarding negotiation), which is pointless with Tor. To allow local connections from the wallet, you might have to add TORSOCKS_ALLOW_INBOUND=1, some OSes need it and some don't. Example:
+
+`DNS_PUBLIC=tcp torsocks monerod --p2p-bind-ip 127.0.0.1 --no-igd`
+
+or:
`DNS_PUBLIC=tcp TORSOCKS_ALLOW_INBOUND=1 torsocks monerod --p2p-bind-ip 127.0.0.1 --no-igd`
@@ -280,7 +284,7 @@ TAILS ships with a very restrictive set of firewall rules. Therefore, you need t
`sudo iptables -I OUTPUT 2 -p tcp -d 127.0.0.1 -m tcp --dport 18081 -j ACCEPT`
-`DNS_PUBLIC=tcp TORSOCKS_ALLOW_INBOUND=1 torsocks ./monerod --p2p-bind-ip 127.0.0.1 --no-igd --rpc-bind-ip 127.0.0.1 --data-dir /home/amnesia/Persistent/your/directory/to/the/blockchain`
+`DNS_PUBLIC=tcp torsocks ./monerod --p2p-bind-ip 127.0.0.1 --no-igd --rpc-bind-ip 127.0.0.1 --data-dir /home/amnesia/Persistent/your/directory/to/the/blockchain`
`./monero-wallet-cli`
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index f080f1e0d..3d4f93aff 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -3063,16 +3063,18 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry
++out_index;
}
+ // we still keep a copy, since we want to keep dsts free of change for user feedback purposes
+ std::vector<cryptonote::tx_destination_entry> splitted_dsts = dsts;
cryptonote::tx_destination_entry change_dts = AUTO_VAL_INIT(change_dts);
if (needed_money < found_money)
{
change_dts.addr = m_account.get_keys().m_account_address;
change_dts.amount = found_money - needed_money;
- dsts.push_back(change_dts);
+ splitted_dsts.push_back(change_dts);
}
crypto::secret_key tx_key;
- bool r = cryptonote::construct_tx_and_get_tx_key(m_account.get_keys(), sources, dsts, extra, tx, unlock_time, tx_key, true);
+ bool r = cryptonote::construct_tx_and_get_tx_key(m_account.get_keys(), sources, splitted_dsts, extra, tx, unlock_time, tx_key, true);
THROW_WALLET_EXCEPTION_IF(!r, error::tx_not_constructed, sources, dsts, unlock_time, m_testnet);
THROW_WALLET_EXCEPTION_IF(upper_transaction_size_limit <= get_object_blobsize(tx), error::tx_too_big, tx, upper_transaction_size_limit);
@@ -3279,6 +3281,9 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions_2(std::vector<cryp
}
LOG_PRINT_L2("Starting with " << unused_transfers_indices.size() << " non-dust outputs and " << unused_dust_indices.size() << " dust outputs");
+ if (unused_dust_indices.empty() && unused_transfers_indices.empty())
+ return std::vector<wallet2::pending_tx>();
+
// start with an empty tx
txes.push_back(TX());
accumulated_fee = 0;
@@ -3515,6 +3520,9 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions_all(const cryptono
}
LOG_PRINT_L2("Starting with " << unused_transfers_indices.size() << " non-dust outputs and " << unused_dust_indices.size() << " dust outputs");
+ if (unused_dust_indices.empty() && unused_transfers_indices.empty())
+ return std::vector<wallet2::pending_tx>();
+
// start with an empty tx
txes.push_back(TX());
accumulated_fee = 0;
diff --git a/utils/gpg_keys/moneromooo.asc b/utils/gpg_keys/moneromooo.asc
index e30809608..86a4a21b4 100644
--- a/utils/gpg_keys/moneromooo.asc
+++ b/utils/gpg_keys/moneromooo.asc
@@ -14,18 +14,18 @@ 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
-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
+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
@@ -36,17 +36,17 @@ xRFfhoiiPyjjPRmJ+/iG3KXLzEiMfbyTFzGkX3Z9BJTxemUx8JOSVQXa++t4w39J
UwzwBKNItDhtQqJpCaF43fJ4ykLMJi5gRpgqtb+T3CF0abXNII1IfS8a0fSpd48d
6hzoCVqpvWsI1fOY5Ui0BIgubNhkr4OJDCWBT5zhxjCJ3QiUSKyyqjfw1Fpuf/0Y
CSA9Q9FSCq9qTppJs5ITHVjhWw2zxrJEG+P2+dvryBhV9l4T2xx1oHqlKX8zzLBG
-kS8NmnxoRFQs5rZYvQARAQABiQIlBBgBAgAPBQJUMpt+AhsMBQkB2pwAAAoJEGhv
-B0VNbO/DRi0P/2HGSAVv8rWq8UF6gVp5VLud94pZkpkIR2GQCkqiva9Ysw1bl1ch
-9blojO0ufHZ6hMtirSpOd848767UuJDjeJaoNF02rOqVy7E6QwGqpXmB2E1fbxzr
-FCd/omA6Jurvp5T2JawpjSsBZYpyxGgDoQ1tC9NjUlcRi1Kebie+p8cQUwZLteXQ
-vgdzUMT70fulyExxbmM4x8BSG0/gTGjkznpvuOlfdWLkQCGuyPxFlsVmAOAOIwh5
-jYTRwU51kW+2bSUG4FwUjDtgRnW1gS43207fA1niPgb65AnQLunrNi6aNaTYc/Fj
-pfGV5kuLJEVxpGsGPJTirh+1nbOss0vr7pngy1MeH5Wqk1+LBZPRgJ2KNaOcCiNT
-8beMCZxOHkLVxJRj318zT5sgT9DWq+OB+m+XGz1wNx0jbMOPrhnwf5tUru7Aqi4/
-3dibY8q68rewT77R7whAood7Zmi98K5SzRnk5F3jp+Ui47TpqQp/SWwpn7gMpDcN
-POY/RnsFrhJjUV9DSF0rm2o2RBtV+TVrIrtEOAjof5jcjDJeU7hV7AK6zOYzksJ/
-l5ajwVyde4plP3/R0PJTYFe2tCDXhhCYc79kgIZO5df7mTygeMU20sTMgs3RMWlg
-42Yz4PoruQRT3YeUC1Bsgr0ONqQShlM+68NbCe+3uhZm9WbNg6+oqcNt
-=7OLW
+kS8NmnxoRFQs5rZYvQARAQABiQIlBBgBAgAPAhsMBQJX3tl5BQkHbqT4AAoJEGhv
+B0VNbO/DrN4QAJVTg2l91LSxb2dTikXbkRCPev1Eiqjd3d4TZIyE7yeYreHUyfcz
+sytEsMUpd5nqqL/QMOwgC8Dm+77Yp480atI/c0wQh30EfJq1YP4q/gwv8EtriFo6
+ZaqYNzajmB8otz6yyb5RD9S6ocZX5b22nnNM/ihiTQJiqJKC2XHPQH3/grniU9if
+WXUlY7Fo+8lRn/aRPMjYT2elsugru8GoplDMyfPRymnMJmTwNPYkg0Dnm2JUXYhH
+VLO6Ebh7fUChsiGNmSp+siv7fcZIf20+LvoymgyT+49LrrQMvRleOqaJc1LBKaK6
+1yU+jLk1f9bFCMORQoTxvIVaSnjMWAeKDxi8nwuVfUJpQYXmbOOqMZgoFi6t+U7/
+T6Cz1CGKv3JgEveWyHeOvsjopej3a4Hmk7QGM/xJrd83roUjypjx5lTeMDvcPlPs
+IQOy33qWguR1xoEnwAp9ov/meS7HtUOoC0m9ROZqWT6ArN+1ONplFP4GTsuW91Qz
+pacQMl09F0KF1MacAdpauCOKj+wy9XPUW8v3kWZufUSgNtOLHS+kVumkqdJuJ0aB
+7Ezc1yYY6DwRFOdlUpTJkRMozyPRvS15Lz/vPEhcbxMHRAg611CS2CqTEIbk2chJ
+QBlj77a45lDTXGQHFVYXlbXx/HWb5zOGpNji0QhY1hOABRo78DT5yda+
+=Vv2M
-----END PGP PUBLIC KEY BLOCK-----